weblogic 服務啓動報錯|weblogic 包加載與衝突等問題

問題1(org.apache.commons.lang.ClassUtils.getClass)

?html

Caused by: org.springframework.beans.factory.BeanCreationException: **Error creating bean with name 'dorado.dataParser'** defined in class path resource [com/bstek/dorado/data/xml-parser-context.xml]: **Cannot resolve reference to bean 'dorado.listParser'** while setting bean property 'subParsers' with key [List]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creatingbean with name 'dorado.listParser' defined in class path resource [com/bstek/dorado/data/xml-parser-context.xml]: Error setting property values; nested exceptiojava

n is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:linux

PropertyAccessException 1: org.springframework.beans.MethodInvocationException:web

Property 'collectionType' threw exception; nested exception is **java.lang.ClassNotFoundException: org.apache.commons.lang.ClassUtils.getClass(Ljava/lang/String;)**spring

**Ljava/lang/Class;**apache

        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)windows

        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)api

        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:378)緩存

解決辦法session

在WEB-INF文件夾下,加上weblogic.xml,讓WebLogic 10先引用WEB-INF下面的jar,內容以下:

?

<?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.1</weblogic-version>

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

    <container-descriptor>

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

        <show-archived-real-path-enabled>true</show-archived-real-path-enabled>

    </container-descriptor>

</weblogic-web-app>

 

問題緣由說明

http://hi.baidu.com/tk_ayj/blog/item/b5865bce25339a2df9dc61a4.html

這裏解釋了xml-api.jar的問題 
http://stackoverflow.com/questions/4925901/classcastexception-while-parsing-xml-with-weblogic

這篇文檔再次印證了那兩個問題
http://www.liferay.com/community/wiki/-/wiki/Main/Weblogic+tips

問題2(java.lang.ClassCastException: **weblogic.xml.jaxp.RegistryDocumentBuilderFactory)

?

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [com/bstek/dorado/core/context.xml]; nested exception is java.lang.ClassCastException: **weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory**

        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)

        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)

解決辦法

刪掉war包中的xml-apis就能夠了

問題緣由說明

由於咱們剛在weblogic.xml裏設置了優先加載WEB-INF中的jar,那麼要刪掉衝突的jar。
http://www.liferay.com/community/wiki/-/wiki/Main/Weblogic+tips 裏說的很清楚:

 

The weblogic.xml Web application deployment descriptor contains a <prefer-web-inf-classes> element (a sub-element of the <container-descriptor> element). By default, this element is set to false. **Setting this element to true subverts the classloader delegation model so that class definitions from the Web application are loaded in preference to class definitions in higher-level classloaders.** This allows a Web application to use its own version of a third-party class, which might also be part of WebLogic Server. 

**When this setting is enabled in weblogic.xml, the following jars has to be removed from portal WEB-INF/lib** (jars withjavax.xml package): 

jaxrpc.jar

stax.jar

wstx.jar

xml-apis.jar

問題3(java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval())

?

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/dorado-home/app-context.xml]: Invocation of init method failed; nested exception is **java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z**

        at org.springframework.beans.factory.support.AbstractAutowireCapableBean

Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)

        at org.springframework.beans.factory.support.AbstractAutowireCapableBean

Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)

解決辦法

把war中的hibernate-jpa-2.0-api-1.0.0.Final.jar刪掉。

問題緣由說明

war和Weblogic 10自己都有jpa的jar包,衝突。

問題4(**java.lang.NoClassDefFoundError: javax/persistence/Cacheable**)

?

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/dorado-home/app-context.xml]: Invocation of init method failed; nested exception is **java.lang.NoClassDefFoundError: javax/persistence/Cacheable**

        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)

        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)

解決辦法

將hibernate-jpa-2.0-api-1.0.0.Final.jar放到%WEBLOGIC_HOME%\jdk160_11\jre\lib\ext中,讓它在Weblogic 10的JPA jar以前引用。

若是使用的是jrockit,則應該將這個jar放在%WEBLOGIC_HOME%\jrockit_160_05\jre\lib\ext中

問題緣由說明

Weblogic 10.3裏的jpa是1.0的(%WEBLOGIC_HOME%\modules\javax.persistence_1.0.0.0_1-0-2.jar),而咱們使用的是2.0版本的。而JPA 1.0好像不支持緩存,因此,單純的刪除hibernate-jpa-2.0-api-1.0.0.Final.jar是不行的。

問題5(**Cannot resolve reference to bean 'dorado.velocityHelper' while setting bean property 'velocityHelper';**)

?

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.bstek.dorado.view.resolver.HtmlViewResolver#199d183' defined in class path resource [com/bstek/dorado/view/servlet-context.xml]: **Cannot resolve reference to bean 'dorado.velocityHelper' while setting bean property 'velocityHelper';** nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dorado.velocityHelper': FactoryBean threw exception on object creation; nested exception is **java.lang.NullPointerException**

        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)

        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)

解決辦法

把velocity-tools-2.0.jar刪掉

問題6(Bad date header)

?

java.lang.IllegalArgumentException: Bad date header: 'Mon, 04 Jul 2011 06:33:24 GMT'        at weblogic.servlet.internal.ServletRequestImpl.getDateHeader(ServletRequestImpl.java:983)

解決辦法

安裝WebLogic 10gR3版本的CR380042_103GA.jar補丁,具體辦法:

首先將CR380042_103GA.jar(點擊下載)拷貝到WebLogic的domain的lib目錄下;

而後修改setDomainEnv.sh/setDomainEnv.bat(前者對應linux系統,後者爲windows系統),在最後設置的CLASSPATH中增長,以下:

 

?

CLASSPATH=.../mydomain/lib/CR380042_103GA.jar;${CLASSPATH} 

相關說明文檔參考:https://forums.oracle.com/forums/thread.jspa?threadID=705412 

 

問題7(javassist.util.proxy.ProxyFactory.setUseCache(Z))

?

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: javassist.util.proxy.ProxyFactory.setUseCache(Z)V

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)

xwork-core-2.1.6.jar致使的

參考ISSUE: http://www.bsdn.org/projects/dorado7/issue/dorado7-1157

問題8:(weblogic.application.ModuleException)

?

weblogic.application.ModuleException:

com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInputFactory

 

這是由於包衝突了,若是項目的lib裏有wstx-asl-xxx.jar,部署以前先從war包裏刪除這些jar包,再部署就能夠了。
注意還要在WEB-INF目錄下添加一個weblogic.xml,設置屬性優先使用當前應用的包文件。配置內容參考問題1

 問題9:No bean named 'dorado.packagesConfigLoader' is defined

解決辦法就是在WEB-INF目錄下添加weblogic.xml文件,配置內容參考問題1

相關文章
相關標籤/搜索