Search code examples
javaintershop

Intershop code deploy workflow


I'm not sure if this is a valid question, but what is the least amount of code change before you need to stop the application server, run gradlew publish, gradlew deployCartridges and then start up the application server?

It's not clear to me to what extent can I make code changes. What would be the preferred development work flow?


Solution

  • First, make sure you have intershop configured correctly for code reloading. You should have these settings set:

    # switch auto reload on for all Intershop artifacts
    intershop.extensions.CheckSource=true
    intershop.queries.CheckSource=true
    intershop.pipelines.CheckSource=true
    intershop.pagelets.CheckSource=true
    intershop.webforms.CheckSource=true
    intershop.template.CheckSource=true
    intershop.template.CheckSourceModified=true
    intershop.template.CompileOnStartup=false
    intershop.template.PrintTemplateName=true
    intershop.template.PrintTemplateMarker=true
    intershop.template.isfilebundle.CheckSource=true
    intershop.localization.CheckContent=true
    
    #let intershop run on all cpu cores
    intershop.cpu.id=
    
    #dont let session timeout so quickly
    intershop.session.TimeOut=60
    
    # switch all preload functionality off
    intershop.pipelines.PreloadFromCartridges=
    intershop.pipelines.PreloadFromSites=
    intershop.pipelets.PreloadFromCartridges=
    intershop.webforms.Preload=false
    intershop.queries.Preload=false
    
    # Monitor the urlrewrite.properties files for modifications
    # and refresh when needed.
    intershop.urlrewrite.CheckSource=true
    
    # The time interval in seconds, after which a lookup should be performed
    # if CheckSource is "true". 0 means every time (not recommended).
    intershop.urlrewrite.CheckSourceInterval=5
    

    These setting are usually in the development.properties file under eserver/server/share/system/config/cluster.

    Also make sure that your environment is set to development. The file eserver/server/share/system/config/cluster/environment.properties should have this configured : environment=development. This setting makes intershop load your settings in the development.properties file.

    Disable the page cache (in SMC), including the SLDSystem (urlrewriting is cached here). I have fallen into this trap more than I like to admit.

    With this setup, you can just edit/save and refresh the browser for isml/pipelines/pagelet,query file,webforms,filebundles,urlrewriting and localization labels. Everything that is not java basically. When it comes to java things get a bit complicated.

    For a simple pipelet you can run gradlew publish and it should reload. However, it won't reload other classes that it depends on that has been modified. Sometimes it doesn't reload at all, I have to admit, I don't know why this happens. For new pipelets and changes in the component framework, u always need to compile/restart intershop.

    Like Rainer mentioned Jrebel can reload your plain java classes and I can also highly recommend it. However, you would need a license for this.