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 |
Yes | No | |
Automatically created |
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 |
java |
java |
|
The following settings in the weblogic.xml deployment descriptors default to -1: |
No | Yes | |
Differences in previous WebLogic versions: |
|||
Up to WebLogic 11: Default JDK used for new domain |
Sun | JRockit | |
Up to WebLogic 8 only: |
15 | 25 | |
Up to WebLogic 8 only: |
15 | 25 | |
Configuration
There is different ways to configure the WebLogic startup mode:
- 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.
- Supply the -Dweblogic.ProductionModeEnabled=true
- 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]
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
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.
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
thanks Jai!
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
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
Sriramk,
you are absoulutely right, I put that in the wrong column.
it’s corrected now. thanks!
best,
Frank
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.
Thanks, nice post
you are welcome Binh!
Thanks for finally writing about >WebLogic Startup Mode: Development or Production? The (hopefully)
Complete List of Differences — munz & more <Liked it!