WebLogic Startup Mode: Development or Production? The (hopefully) Complete List of Differences

Let me quickly summarize the all differences between development and production startup mode for WebLogic 12c and previous versions. Information about it is scattered across the Oracle documentation and several blog postings but non of those I checked were complete.

Differences

Startup Mode

Development                     Production

Auto deployment
(to admin server only)

Yes No

Automatically created
boot.properties for Admin server only under
$DOMAIN_HOME/servers/$SERVER_NAME/security 

Yes No

Nodemanger username and password

default admin
credentials
randomly
generated

SSL demo certificates cause warning in log files

No Yes

Log file are rotated at server startup

Yes No

On demand deployment of internal applications as default

Yes No

Availability of web service test client

Yes No

Availability of Classloader Analysis Tool

Yes No

Availability of Fast Swap

Yes No

Change Center Enabled

No Yes

Default start parameters
when using Sun JDK and the default
startWebLogic script 

java
-client
-Xms256m
-Xmx512m
-XX:CompileThreshold=
8000
-XX:PermSize=128m
-XX:MaxPermSize=256m

java
-server
-Xms256m
-Xmx512m
-XX:MaxPermSiz=256m

The following settings in the weblogic.xml deployment descriptors default to -1:

pageCheckSeconds

servlet-reload-check-secs

servlet-reload-check

resource-reload-check-secs

No Yes

 

 

Differences in previous WebLogic versions:

Up to WebLogic 11:

Default JDK used for new domain

Sun JRockit

Up to WebLogic 8 only:
Default number of execute threads

15 25

Up to WebLogic 8 only:
maximum number of JDBC connections default setting

15 25

 

Configuration

There is different ways to configure the WebLogic startup mode:

  1. The startup mode can be configured with the admin console, as shown on the screenshot below (requires a restart). Once it’s set to production mode it cannot be reverted with the admin console.
  2. Supply the -Dweblogic.ProductionModeEnabled=true switch as startup parameter
  3. Set the PRODUCTION_MODE variable in the setDomainEnv script in the directory DOMAIN_NAME/bin.

What you should know

Some issues to be aware of:

  • The differences between the two settings depend on the WebLogic version. This can be a bit confusing when you are running different environments with different versions. See the table above: For WebLogic 8 the maximum number of connections in a JDBC connection pool defaults to 25 in production mode (but 15 in development mode); for WebLogic 12c it defaults to 15 in both cases.
  • You cannot revert to development mode from the WebLogic admin console. It’s like the child-proof lock in the back of your car. I understand that is makes sense to protect the children in the back seat your car from themselves but you are are logged with the admin role – still you cannot revert to development mode using the admin console.
  • Autodeployment is not used that much anymore since it only deploys to the admin server – so it doesn’t make sense for a production domain. What if you are a developer? Then your IDE is deploying to the admin server, that is correct – but your IDE is typically not using autodeployment.
  • Note, that there will be a randomly set user and password for nodemanager when creating your domain in production mode with config.sh (see comments from Jacco).
  • You cannot disable the change center in production mode

 

Something I forgot? I appreciate your feedback.

 


[A more detailed discussion with directions will be part of my upcoming WebLogic 12c book]

Comments

  1. Another interesting feature lost in Production mode is the WebService internal client.

    Anyway I am not sure of this could be related to this list.

    Cheers,

    German

    • thanks for your valuable input, German! I updated the original posting.

      btw, there is whole set of switches causing these differences in the
      setDomainEnv.sh script (e.g. I never noticed the last one logErrorsToConsoleFlag).

      if [ “${PRODUCTION_MODE}” = “true” ] ; then
      debugFlag=”false”
      export debugFlag
      testConsoleFlag=”false”
      export testConsoleFlag
      iterativeDevFlag=”false”
      export iterativeDevFlag
      logErrorsToConsoleFlag=”false”
      export logErrorsToConsoleFlag
      fi

  2. Yes, I think the startup script will tell to WLS if it is in PROD or DEV mode (including the tag inot config.xml).

    Another tool that is not in development mode is: Classloader Analysis Tool (CAT)

    Cheers,

    German.

  3. Hi Frank,

    SSL demo certificates cause warning in log files – Development Mode : No and Production Mode : Yes

    Also The following settings in the weblogic.xml deployment descriptors default to -1:

    pageCheckSeconds

    servlet-reload-check-secs

    servlet-reload-check

    resource-reload-check-secs

    – Development Mode : No and Production Mode : Yes

    Cheers

  4. The statement about boot.properties can be wrong. There is a boot.properties used by the startWebLogic.sh script ($DOMAIN_HOME/servers/$SERVER_NAME/security) that needs to be created manually. Next to this the nodemanager sets a boot.properties in $DOMAIN_HOME/servers/$SERVER_NAME/data/nodemanager. The latter is created automatically in production mode too.

    Another difference is the username and the password for nodemanager. When a domain is created with production mode trough config.sh the username and password for nodemanager are generated randomly. With development mode this is not the case (then weblogic/weblogic_password).

    The default start parameters you mention are only used when using the startWebLogic.sh script. This script can be used manually, or through nodemanager if you set startScriptEnabled to true (default = false).

    • Hi Jacco,

      many thanks for sharing your knowledge and the detailed feedback!

      I rephrased the statement about the boot.properties in the posting.
      For admin server only the boot.properties in $DOMAIN_HOME/servers/$SERVER_NAME/security is created automatically in development mode – yet the whole security directory can be copied over to make it work for the managed servers as well.

      What you write in your second paragraph about nodemanager username and password is great knowledge! I will add it to the text.

      cheers,

      Frank

  5. Sriramk says:

    Hi,

    Note sure why startup argument is -client for production and -server for development. I thought it should be other way around. I have seen -client mode in development mode till 10.3.4 but not sure if it has changed in 12c

    regards

    sriram kumar

  6. Murali says:

    Hi German

    I have created the web logic domain in production mode but now i want to move the domain to the development mode. Can you please let me know the changes to made.

    • Hi Murali,

      this is Frank, (not German)

      there are many ways, pick one:

      – Stop Admin server, backup config.xml, then edit the ProductionMode setting manually, save file and restart admin.
      – Set the PRODUCTION_MODE variable in the setDomainEnv script in the directory DOMAIN_NAME/bin
      – Supply the -Dweblogic.ProductionModeEnabled switch as startup parameter to the JVM commandline.

      Every solution has their own pro/cons. It’s one of the few cases where I personally would edit config.xml.
      A bit childish not being able to change this back when logged in as admin, isn’t it?

      good luck.

Speak Your Mind

*