This is a discussion about what approach would be best for the Upgrade tool to follow. In an 8.x > 8.x EE upgrade, the method followed for upgrade was simply to copy the domain configuration from source to target. The same method does not work well in 8.x>9.1 upgrade because of the following reasons. Manual Trial of the Upgrade Procedure Copy transform approach 8.2EE->9.1EE 1. Copied all the directories apart from bin,imq,session-store,generated and docroot. The old directories of these exceptions remain intact in the 9.1ee domains directory. 2. Made the cluster related changes : --> cluster attributes --> group-management-service --> module-log-levels 3. Changed DOCTYPE to 1.3 4. Added appserv-launch.jar to the system-classpath of the java-config element. 5. Modified the default-web.xml : changed com.sun.enterprise.web.servlets.DefaultServlet to org.apache.catalina.servlets.DefaultServlet. 6. Started the domain. 7. Redeployed the apps from 8.2ee (hello.war and stateless-simple.ear after creating a jar out of the directories manually, as done by the upgrade tool). Redeploy was successful. After this, i observed the generated directory getting updated with the contents. 8. Stopped the domain. 9. Removed the references to the com_sun_web_ui web module in domain.xml. 10. Started domain. 11. Domain started up, but with an exception
[#|2006-12-26T11:48:29.893+0530|SEVERE|sun-appserver-ee9.1|javax.enterprise.system.core.classloading|_ThreadID=10;_ThreadName=main;_RequestID=400741ca-082f-4f18-bd8c-c7244cf78a85;|LDR5004: UnExpected error occured while creating ejb container
java.lang.ClassNotFoundException: com.sun.ejb.containers.TimerBean_2100919770_ConcreteImpl
at com.sun.enterprise.loader.EJBClassLoader.findClassData(EJBClassLoader.java:724)
at com.sun.enterprise.loader.EJBClassLoader.findClass(EJBClassLoader.java:614)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:410)
at com.sun.ejb.containers.EntityContainer.<init>(EntityContainer.java:236)
at com.sun.ejb.containers.TimerBeanContainer.<init>(TimerBeanContainer.java:59)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:282)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:484)
at com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:183)
at com.sun.enterprise.server.TomcatApplicationLoader.load(TomcatApplicationLoader.java:113)
at com.sun.enterprise.server.AbstractManager.loadOneSystemApp(AbstractManager.java:331)
at com.sun.enterprise.server.AbstractManager.loadSystem(AbstractManager.java:289)
at com.sun.enterprise.server.SystemAppLifecycle.loadSystemApps(SystemAppLifecycle.java:149)
at com.sun.enterprise.server.SystemAppLifecycle.onStartup(SystemAppLifecycle.java:95)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:332)
at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:112)
at com.sun.enterprise.server.PEMain.run(PEMain.java:326)
at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.server.PELaunch.main(PELaunch.java:272)
|#]
The class TimerBean_2100919770_ConcreteImpl.class was missing in generated/ejb/j2ee-apps/ejb_container_timer_app/com/sun/ejb/containers/ directory. Whereas it is found in the 8.2ee generated directory of ejb container. Since we did not copy over the generated directory and since it is a system app and we do not redeploy this one, this exception is thrown. Apart from these, we have to configure the following 1. Self Management service by adding the top level element <management-rules> to domain.xml. Adding the new rules by using the asadmin create-management-rule is upto us. 2. EJB Life cycle module : automatic timer migration component for DAS instance. 3. Load-balancers - top level element 4. lb-configs - top level element 5. diagnostic-service to all the configs 6. module-log-levels with self-management="INFO" management-event="INFO" (3) and (4) are required when the apps are accessed via the admin gui. If they are not there, the following exception is thrown while apps are accessed.
[#|2006-12-26T12:19:18.257+0530|INFO|sun-appserver-ee9.1|javax.enterprise.system.tools.admin|_ThreadID=13;_ThreadName=httpSSLWorkerThread-4849-21;|ERROR in IndexTreeNode.ensureChildren.
com.sun.enterprise.tools.guiframework.exception.FrameworkException: com.sun.enterprise.tools.guiframework.exception.FrameworkException: javax.management.InstanceNotFoundException: MBean instance not found: com.sun.appserv:type=load-balancers,category=config
at com.sun.enterprise.tools.admingui.util.MBeanUtil.invoke(MBeanUtil.java:71)
at com.sun.enterprise.tools.admingui.tree.DynamicTreeNode.getChildObjectNames(DynamicTreeNode.java:196)
at com.sun.enterprise.tools.admingui.tree.DynamicTreeNode.updateKids(DynamicTreeNode.java:72)
at com.sun.enterprise.tools.admingui.tree.DynamicTreeNode.ensureChildren(DynamicTreeNode.java:58)
at com.sun.enterprise.tools.admingui.tree.IndexTreeNode.getChildren(IndexTreeNode.java:426)
at com.sun.enterprise.tools.admingui.tree.IndexTreeView.beginHasContainerKidsDisplay(IndexTreeView.java:411)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.iplanet.jato.view.ContainerViewBase.beginChildDisplay(ContainerViewBase.java:834)
at com.iplanet.jato.taglib.ContentTag.doStartTag(ContentTag.java:94)
at org.apache.jsp.jsp.Index_jsp._jspx_meth_jato_content_4(Index_jsp.java:735)
at org.apache.jsp.jsp.Index_jsp._jspx_meth_jato_treeNode_3(Index_jsp.java:699)
at org.apache.jsp.jsp.Index_jsp._jspx_meth_jato_treeNode_2(Index_jsp.java:660)
at org.apache.jsp.jsp.Index_jsp._jspService(Index_jsp.java:207)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:464)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:358)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:398)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:839)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:528)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:461)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:353)
at com.iplanet.jato.view.ViewBeanBase.forward(ViewBeanBase.java:340)
at com.iplanet.jato.view.ViewBeanBase.forwardTo(ViewBeanBase.java:261)
at com.iplanet.jato.ApplicationServletBase.dispatchRequest(ApplicationServletBase.java:981)
at com.iplanet.jato.ApplicationServletBase.processRequest(ApplicationServletBase.java:615)
at com.sun.enterprise.tools.guiframework.view.BaseServlet.processRequest(BaseServlet.java:204)
at com.iplanet.jato.ApplicationServletBase.doGet(ApplicationServletBase.java:459)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:398)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:255)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:186)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1032)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1032)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:250)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:618)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.processNonBlocked(DefaultProcessorTask.java:549)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:790)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:326)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLReadTask.process(SSLReadTask.java:397)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLReadTask.doTask(SSLReadTask.java:210)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:93)
Caused by: com.sun.enterprise.tools.guiframework.exception.FrameworkException: javax.management.InstanceNotFoundException: MBean instance not found: com.sun.appserv:type=load-balancers,category=config
at com.sun.enterprise.tools.admingui.util.MBeanUtil.invoke(MBeanUtil.java:169)
at com.sun.enterprise.tools.admingui.util.MBeanUtil.invoke(MBeanUtil.java:60)
... 58 more
Caused by: javax.management.InstanceNotFoundException: MBean instance not found: com.sun.appserv:type=load-balancers,category=config
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.manufactureAndRegisterMBean(SunoneInterceptor.java:675)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.registerWithPersistenceCheck(SunoneInterceptor.java:697)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:295)
at com.sun.enterprise.tools.admingui.util.MBeanUtil.invoke(MBeanUtil.java:162)
... 59 more
|#]
The autodeploy of the system apps happens only when the 9.1ee domain is started for the first time. When i created the 9.1ee installation, i did not start the domain before i proceeded with the upgrade procedure. After i start the domain, the domain.xml is updated with these j2ee-application elements. And the generated directory contains the TimerBean_2100919770_ConcreteImpl.class in ejb container. Trial 2: Removing the references of System Apps before starting domain: 1. Install 9.1ee with a default domain. 2. Copy operation (from 8.2) : copied config, logs, lib and applications (apart from the system apps) directories and master-password file into 9.1ee domain directory 3. Did a transformation manually adding the following 3.1. Modified DOCTYPE to 1.3 3.2. Added appserv-launch.jar to the system-classpath 3.3. Added Cluster related attributes 3.4. Removed references of com_sun_web_ui module from the domain.xml 3.5. Modified default-web.xml to change the package name of DefaultServlet. 4. Started domain The system apps that are present in the domain.xml (already from 8.2) viz., ejb_container_timer and MejbApp give a problem since they cannot be autodeployed. 5. Stoppped domain and removed the references of the above two j2ee-apps and started the domain again. Now, the autodeploy phase happens and ejb_container_timer and MejbApp are deployed successfully. However, another app called JWSappclients throws a WARNING message as mentioned below.
[#|2006-12-27T15:11:31.297+0530|INFO|sun-appserver-ee9.1|javax.enterprise.system.tools.deployment|_ThreadID=10;_ThreadName=main;|[AutoDeploy] Autodeploy failed : /opt/appserver-trial-1-91/lib/install/applications/__JWSappclients.ear.|#]
[#|2006-12-27T15:11:31.298+0530|WARNING|sun-appserver-ee9.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;_RequestID=fd41ca2f-d7d4-4a61-a325-8fb3a7ffe9e8;|Exception occured while accessing :__JWSappclients.ear_deployFailed|#]
[#|2006-12-27T15:11:31.299+0530|INFO|sun-appserver-ee9.1|javax.enterprise.system.tools.deployment|_ThreadID=10;_ThreadName=main;|[AutoDeploy] Selecting file /opt/appserver-trial-1-91/lib/install/applications/__JWSappclients.ear for autodeployment.|#]
[#|2006-12-27T15:11:31.318+0530|INFO|sun-appserver-ee9.1|javax.enterprise.system.tools.deployment|_ThreadID=10;_ThreadName=main;|Autoundeploying application :__JWSappclients|#]
[#|2006-12-27T15:11:31.319+0530|WARNING|sun-appserver-ee9.1|javax.enterprise.system.tools.admin|_ThreadID=10;_ThreadName=main;_RequestID=fd41ca2f-d7d4-4a61-a325-8fb3a7ffe9e8;|ADM1024:Undeployment failed - Detailed Message:
com.sun.enterprise.admin.common.exception.MBeanConfigException: Cannot undeploy a system component
at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.validate(ApplicationsConfigMBean.java:3784)
at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.undeploy(ApplicationsConfigMBean.java:582)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:353)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:336)
at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:448)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:77)
at $Proxy1.invoke(Unknown Source)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:297)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.invokeUndeploymentService(AutoDeployer.java:818)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.undeployJavaEEArchive(AutoDeployer.java:340)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.undeployApplication(AutoDeployer.java:322)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployJavaEEArchive(AutoDeployer.java:476)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:436)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:253)
at com.sun.enterprise.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:206)
at com.sun.enterprise.server.SystemAppLifecycle.deployToTarget(SystemAppLifecycle.java:196)
at com.sun.enterprise.server.SystemAppLifecycle.deploySystemApps(SystemAppLifecycle.java:171)
at com.sun.enterprise.server.SystemAppLifecycle.onStartup(SystemAppLifecycle.java:93)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:332)
at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:112)
at com.sun.enterprise.server.PEMain.run(PEMain.java:326)
at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.server.PELaunch.main(PELaunch.java:272)
|#]
[#|2006-12-27T15:11:31.322+0530|SEVERE|sun-appserver-ee9.1|javax.enterprise.system.tools.deployment|_ThreadID=10;_ThreadName=main;Cannot undeploy a system component
;_RequestID=fd41ca2f-d7d4-4a61-a325-8fb3a7ffe9e8;|"DPL8011: autodeployment failure while deploying the application : Cannot undeploy a system component
"|#]
[#|2006-12-27T15:11:31.322+0530|INFO|sun-appserver-ee9.1|javax.enterprise.system.tools.deployment|_ThreadID=10;_ThreadName=main;|[AutoDeploy] Autoundeploy failed : /opt/appserver-trial-1-91/lib/install/applications/__JWSappclients.ear.|#]
Hence i resorted to the method of create-process-transform method of doing things. With the SBS case, there is absolutely no problem after an upgrade in starting up the domain, node-agent, cluster and instances (stand-alone and clustered). With the IP case, the domain starts up fine but when the node-agent starts up, there is a synchronization problem. This is found in Nodegent Synchronization link. The node-agent/MA/agent/config/domain.xml is processed before a synchronization could happen. This when done would reflect the 8.2ee domain.xml that has some missing elements (mentioned above in the transformation step). This will throw an exception. As a workaround, Nandini asked me to copy the domain.xml from domains dir to NA config dir and start the node-agent with a syncinstances=true option. This starts up the node-agent fine. This problem would occur in any case - a copy approach or create approach. Since it is an inplace upgrade, we will not modify the node-agent config directory. We expect the synchronization to happen automatically when we start the node-agent. Parsing the domain.xml before the synchronization happens might throw this exception any time. Back
|