Wednesday, July 3, 2013

Why My WebLogic Managed Server is in ADMIN State?

After bringing up CommonDomain in WebLogic, I have tried to bring up all its managed servers. Some servers were in RUNNING state. However, some were in ADMIN state.

What's ADMIN state?


In the ADMIN state, WebLogic Server is up and running, but available only for administration operations, allowing you to perform server and application-level administration tasks. Read [1] to find out what you can do when a server instance is in the ADMIN state. For example, you can resume its state from the WebLogic Console. However, even it can be resumed to the RUNNING state, the underlying issue, which has brought it to the ADMIN state at beginning, remains un-handled. So, you must check out what happened from the server log files.

The Culprit


As stated in [2], it says:
Most of the cases it happens if any of the Database is down and WebLogic tries to create the Connection Pool at the boot up time. One way to avoid this kind of scenario is to set the InitialCapacity of the DataSource to 0 (Zero) so that weblogic will not try to create any JDBC Connection object at the start up time so like this we can avoid Connection creation failure conditions and avoid moving our server to ADMIN State.

Our case was exactly like that—the database was down.

Conclusion


If you have found the following entries in your log file:
MDS-01376: Unable to get database connection from data source "mds-SpacesDS" configured with JNDI name "jdbc/mds/SpacesDS".
weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: IO Error: The Network Adapter could not establish the connection
        at oracle.mds.internal.lcm.deploy.DeployManager.deploy(DeployManager.java:747)
        at oracle.mds.internal.lcm.deploy.DeployManager.startDeployment(DeployManager.java:211)
        at oracle.mds.internal.lcm.MDSLifecycleListenerImpl.start(MDSLifecycleListenerImpl.java:215)
        at oracle.mds.lcm.weblogic.WLLifecycleListener.preStart(WLLifecycleListener.java:77)
        at weblogic.application.internal.flow...$PreStartAction.run(BaseLifecycleFlow.java:290)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.application.internal....$LifecycleListenerAction.invoke(BaseLifecycleFlow.java:207)

the solution of it is checking the health of your database, which your managed servers depend on.

References

  1. Understanding Server Life Cycle
  2. WebLogic Server is in ADMIN State ?


No comments: