• 从websphere6.1迁移到weblogic10.3的问题总结--转


    http://blog.itpub.net/9399028/viewspace-692974/

    以前用weblogic低版本的时候,感觉挺容易的,也没什么要注意的,这次真正把应用从websphere迁移到weblogic下后,发现问题还是真多了。
     

    系统采用war包的方式部署。

     

    问题一:

    ####<2011-3-29 下午051743 CST> <Info> <ServletContext-/MIS-beta-4.0.37> <javasvr> <AdminServer> <[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1301390263593> <BEA-000000> <Loading Spring root WebApplicationContext>

    ####<2011-3-29 下午051746 CST> <Warning> <HTTP> <javasvr> <AdminServer> <[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1301390266609> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext_Hibernate.xml]: Initialization of bean failed; nested exception is java.io.FileNotFoundException: class path resource [com/edu/nts/entity] cannot be resolved to absolute file path because it does not reside in the file system: zip:D:/soft/Middleware/user_projects/domains/my_domain/servers/AdminServer/tmp/_WL_user/MIS-437/lhcsnh/war/WEB-INF/lib/_wl_cls_gen.jar!/com/edu/nts/entity.

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext_Hibernate.xml]: Initialization of bean failed; nested exception is java.io.FileNotFoundException: class path resource [com/edu/nts/entity] cannot be resolved to absolute file path because it does not reside in the file system: zip:D:/soft/Middleware/user_projects/domains/my_domain/servers/AdminServer/tmp/_WL_user/MIS-437/lhcsnh/war/WEB-INF/lib/_wl_cls_gen.jar!/com/edu/nts/entity

             at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:370)

             at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)

             at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)

             at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:269)

             at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320)

             at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)

             at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)

             at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)

             at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)

             at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)

             at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

             at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

             at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)

             at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1799)

             at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3041)

             at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1374)

             at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:452)

             at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

             at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)

             at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)

             at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

             at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)

             at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:206)

             at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:40)

             at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)

             at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:140)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:106)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)

             at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)

             at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:12)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:67)

             at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)

             at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

             at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

    java.io.FileNotFoundException: class path resource [com/edu/nts/entity] cannot be resolved to absolute file path because it does not reside in the file system: zip:D:/soft/Middleware/user_projects/domains/my_domain/servers/AdminServer/tmp/_WL_user/MIS-437/lhcsnh/war/WEB-INF/lib/_wl_cls_gen.jar!/com/edu/nts/entity

             at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:173)

             at org.springframework.core.io.ClassPathResource.getFile(ClassPathResource.java:169)

             at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:676)

             at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1059)

             at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:363)

             at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)

             at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)

             at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:269)

             at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320)

             at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)

             at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)

             at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)

             at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)

             at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)

             at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

             at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

             at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)

             at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1799)

             at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3041)

             at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1374)

             at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:452)

             at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

             at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)

             at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)

             at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

             at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)

             at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:206)

             at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:40)

             at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)

             at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:140)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:106)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)

             at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)

             at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:12)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:67)

             at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)

             at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

             at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

    原因:

    weblogic上部署war包的话,默认是不展开的,所以如下的hibernate配置不能解析。

    <bean id="sessionFactory"

                       class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">           

                       <property name="mappingDirectoryLocations">

                                <list>

                                         <value>classpath:/com/edu/nts/entity</value>

                                </list>

                       </property>

    </bean>

    解决办法:

    针对weblogic的部署方式,必须改为如下方式。

    <bean id="sessionFactory"

                       class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">           

                       <property name="mappingResources">

                                <list>

                                         <value>com/edu/nts/entity/AidStudentInfo.hbm.xml</value>              

                                         <value>com/edu/nts/entity/AidStudentList.hbm.xml</value>

                                         <value>com/edu/nts/entity/AidStudentListTemp.hbm.xml</value>

                                         。。。

                                </list>

    </bean>

    虽然没法偷懒用上面的注入方式,但还是可以通过编写一个小程序生成上面的明细注入片段,修改量不会太大。

     

    问题二:

    <2011-3-29 下午051946 CST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1303283427671' for task '1'. Error is: 'weblogic.application.ModuleException: [HTTP:101216]Servlet: "log4j" failed to preload on startup in Web application: "MIS-beta-4.0.38.war".

    java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded

            at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:92)

    java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded

            at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:92)

            at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)

            at org.springframework.web.util.Log4jConfigServlet.init(Log4jConfigServlet.java:58)

            at javax.servlet.GenericServlet.init(GenericServlet.java:241)

            at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)

            at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

            at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

            at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)

            at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)

            at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)

            at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:521)

            at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1913)

            at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1887)

            at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1805)

            at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3041)

            at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1374)

            at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:452)

            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

            at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

            at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)

            at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)

            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

            at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

            at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)

            at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)

            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

            at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:206)

            at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:40)

            at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)

            at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)

            at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)

            at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:140)

            at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:106)

            at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)

            at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)

            at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)

            at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)

            at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)

            at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181)

            at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:12)

            at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:67)

            at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)

            at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

            at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

    '

    weblogic.application.ModuleException: [HTTP:101216]Servlet: "log4j" failed to preload on startup in Web application: "MIS-beta-4.0.38.war".

    java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded

            at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:92)

            at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)

            at org.springframework.web.util.Log4jConfigServlet.init(Log4jConfigServlet.java:58)

            at javax.servlet.GenericServlet.init(GenericServlet.java:241)

            at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)

            at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

            at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

            at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)

            at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)

            at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)

            at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:521)

            at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1913)

            at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1887)

            at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1805)

            at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3041)

            at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1374)

            at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:452)

            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

            at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

            at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)

            at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)

            at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)

            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

            at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)

            at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)

            at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)

            at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

    原因:

    web.xmllog4j的配置方式问题,默认情况log4j.properties放在classes目录下,而由于war没展开,找不到这个文件,所以把它直接放WEB-INF目录下,并去掉原来web.xml里面的如下配置:

             <servlet>

                       <servlet-name>log4j</servlet-name>

                       <servlet-class>

                                org.springframework.web.util.Log4jConfigServlet

                       </servlet-class>

                       <load-on-startup>1</load-on-startup>

             </servlet>

    解决办法:

    新建一个servlet,初始化log4j配置文件:

    public void init() throws ServletException {

     

                       InputStream is = getServletContext().getResourceAsStream(

                                         "/WEB-INF/log4j.properties");

                       Properties props = new Properties();

                       try {

                                props.load(is);

                       } catch (IOException e) {

                                System.err.println("Load log4j configuration failed");

                       }

                       PropertyConfigurator.configure(props);

     

             }

     

    并注册到web.xml文件中:

    <servlet>

        <servlet-name>Log4jInitServlet</servlet-name>

        <servlet-class>com.edu.nts.web.servlet.Log4jInitServlet</servlet-class>

        <load-on-startup>0</load-on-startup>

      </servlet>

     

    问题三:

    由于种种原因,该应用程序必须部署到服务器的根目录(/)下面,否则样式及功能都会出现问题。

    解决办法:

    为了把应用程序的context root改到根目录,创建了一个weblogic.xml文件,放到war包的WEB-INF目录下,内容如:

    <?xml version="1.0" encoding="UTF-8"?>

    <weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

    http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

    http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">

        <weblogic-version>10.3.2</weblogic-version>

        <context-root>/</context-root>

    </weblogic-web-app>

     

    问题四:

    打开登录页面报错,后台错误如下:

    ####<2011-4-2 下午060011 CST> <Info> <ServletContext-> <javasvr> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1301738411265> <BEA-000000> <redirect.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlCoreTLV" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory".

    <%@ page language="java" pageEncoding="UTF-8"%>

    ^---------------------------------------------^

    redirect.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlFmtTLV" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory".

    <%@ page language="java" pageEncoding="UTF-8"%>

    ^---------------------------------------------^

    原因:jar包冲突,以及jar包加载顺序的问题引起

    解决办法:

    删除lib目录下的xml-apis.jar,并在上面的weblogic.xml中增加如下:

             <container-descriptor>

                       <prefer-web-inf-classes>true</prefer-web-inf-classes>

             </container-descriptor>

    使classloader首先加载webinfo下的jar文件,修改后的weblogic.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>

    <weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

    http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

    http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">

        <weblogic-version>10.3.2</weblogic-version>

        <context-root>/</context-root>

             <container-descriptor>

                       <prefer-web-inf-classes>true</prefer-web-inf-classes>

             </container-descriptor>

    </weblogic-web-app>

     

    问题五:

    部署应用程序过程中,报如下错误:

    ####<2011-4-2 下午093556 CST> <Info> <Deployer> <javasvr> <AdminServer> <[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1301751356796> <BEA-149038> <Initiating Task for jdbc.orcl : [Deployer:149026]activate application jdbc.orcl on myCluster.>

    ####<2011-4-2 下午093557 CST> <Warning> <Deployer> <javasvr> <AdminServer> <[STANDBY] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1301751357265> <BEA-149004> <Failures were detected while initiating activate task for application 'jdbc.orcl'.>

    ####<2011-4-2 下午093557 CST> <Warning> <Deployer> <javasvr> <AdminServer> <[STANDBY] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1301751357265> <BEA-149078> <Stack trace for message 149004

    weblogic.application.ModuleException:

             at weblogic.jdbc.module.JDBCModule.activate(JDBCModule.java:350)

             at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107)

             at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:411)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:74)

             at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:66)

             at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:206)

             at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:40)

             at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)

             at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:140)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:106)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)

             at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:407)

             at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.commit(DeploymentReceiverCallbackDeliverer.java:63)

             at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingCommit.callDeploymentReceivers(AwaitingCommit.java:235)

             at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingCommit.handleCommit(AwaitingCommit.java:131)

             at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingCommit.receivedCommit(AwaitingCommit.java:44)

             at weblogic.deploy.service.internal.transport.CommonMessageReceiver.receiveRequestCommitMsg(CommonMessageReceiver.java:510)

             at weblogic.deploy.service.internal.transport.CommonMessageReceiver$3.run(CommonMessageReceiver.java:782)

             at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)

             at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

             at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

    weblogic.common.ResourceException: Failed to bind remote object (ClusterableRemoteRef(-4790033318770968615S::my_domain:Server-0 null)/287         [weblogic.jdbc.common.internal.RemoteDataSource]) to replica aware stub at orcl(ClusterableRemoteRef(-4790033318770968615S::my_domain:Server-0 [-4790033318770968615S::my_domain:Server-0/286])/286 [weblogic.jdbc.common.internal.RemoteDataSource])

             at weblogic.jdbc.common.internal.RmiDataSource.start(RmiDataSource.java:395)

             at weblogic.jdbc.common.internal.DataSourceManager.createAndStartDataSource(DataSourceManager.java:136)

             at weblogic.jdbc.common.internal.DataSourceManager.createAndStartDataSource(DataSourceManager.java:97)

             at weblogic.jdbc.module.JDBCModule.activate(JDBCModule.java:347)

             at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107)

             at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:411)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:74)

             at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:66)

             at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:629)

             at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)

             at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:206)

             at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:40)

             at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)

             at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:140)

             at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:106)

             at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)

             at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)

             at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:407)

             at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181)

             at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.commit(DeploymentReceiverCallbackDeliverer.java:63)

             at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingCommit.callDeploymentReceivers(AwaitingCommit.java:235)

             at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingCommit.handleCommit(AwaitingCommit.java:131)

             at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingCommit.receivedCommit(AwaitingCommit.java:44)

             at weblogic.deploy.service.internal.transport.CommonMessageReceiver.receiveRequestCommitMsg(CommonMessageReceiver.java:510)

             at weblogic.deploy.service.internal.transport.CommonMessageReceiver$3.run(CommonMessageReceiver.java:782)

             at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)

             at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

             at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

    原因:

    配置的weblogic连接池名称命民规则问题。

    解决办法:

    由于数据源的jndi为:jdbc/orcl,数据源的名称必须为jdbc.orcl,否则就会报上面的类似错误。

     

    问题六:

    错误信息忘记了,页面访问报编译错误。

    原因:

    类似如下的jstl判断语法不能正确解析,真是奇怪

    ${changeForm.change.oldVal == 1 ? : changeForm.change.oldVal ==0?:’’}

    解决办法:

    采用choose语法修改为如下

    <c:choose>

             <c:when test="${ changeForm.change.oldVal ==1}"></c:when>

             <c:when test="${ changeForm.change.oldVal ==0}"></c:when>

             <c:otherwise></c:otherwise>

    </c:choose>

     

    问题七:

    getServletContext().getRealPath("/upload");返回为null的问题。

    原因:

    由于weblogic下,war没有展开,所以也就不存在相对于应用程序的路径realpath

    解决办法:

    若是为了得到相对路径,采用以下方式

    getServletContext().getResource("/upload").getPath();

    若是为了加载资源文件,则采用如下方式

    InputStream is = getServletContext().getResourceAsStream(

                                         "/WEB-INF/log4j.properties");

    Properties props = new Properties();

    try {

             props.load(is);

    } catch (IOException e) {

             System.err.println("Load log4j configuration failed");

    }

    PropertyConfigurator.configure(props);

     

    问题八:

    采用jquery的方式异步请求后台数据,后台采用PrintWriter返回结果,结果页面不能正确加载数据。

    原因:

    PrintWriter writer = (PrintWriter) response.getWriter();

    writer.write("failure");

    writer.close();

    以上close之前,少了一句

    PrintWriter writer = (PrintWriter) response.getWriter();

    writer.write("failure");

    writer.flush();

    writer.close();

  • 相关阅读:
    jdbc批量插入后返回批量id
    java 实现逻辑表达式解析
    jdbctemplate 批量插入 返回自增id
    谷歌浏览器 jsonVue 插件
    两个检查有无数据的sql语句
    Java
    Webview学习笔记 Hello
    调度器35—相关DEBUG汇总 Hello
    设计模式总结汇总 Hello
    kernel syscore 学习笔记 Hello
  • 原文地址:https://www.cnblogs.com/davidwang456/p/3522889.html
Copyright © 2020-2023  润新知