当前位置: 代码迷 >> Web前端 >> 调度Spring3和CXF的web项目到weblogic server 11g
  详细解决方案

调度Spring3和CXF的web项目到weblogic server 11g

热度:194   发布时间:2013-07-11 15:38:46.0
部署Spring3和CXF的web项目到weblogic server 11g
eclipse里的web项目,用到了spring3和CXF,直接打成war包发布到weblogic,会报oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'的错误。该死的包冲突,本来应该用xercesImpl的jar包来解析spring的application-context.xml,但优先使用了weblogic自带的xmlparserv2的jar包。
在eclipse里新建一个Enterprise Application Project,在选择Java EE Module Dependencies的时候选择之前的web项目。在项目EarContent的目录META-INF下有一个weblogic-application.xml,修改成如下:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application
	xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application"
	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/javaee_5.xsd http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.3/weblogic-application.xsd">
	<!--weblogic-version:10.3.6 -->
	<wls:xml>
		<wls:parser-factory>
			<wls:saxparser-factory>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</wls:saxparser-factory>
			<wls:document-builder-factory>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</wls:document-builder-factory>
			<wls:transformer-factory>com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl</wls:transformer-factory>
		</wls:parser-factory>
	</wls:xml>
	<wls:application-param>
		<wls:param-name>webapp.encoding.default</wls:param-name>
		<wls:param-value>UTF-8</wls:param-value>
	</wls:application-param>
    <wls:classloader-structure>
        <wls:module-ref>
            <wls:module-uri>bpmservice.war</wls:module-uri>
        </wls:module-ref>
    </wls:classloader-structure>
	<wls:component-factory-class-name>org.springframework.jee.interfaces.SpringComponentFactory</wls:component-factory-class-name>
	<wls:prefer-application-packages>
		<wls:package-name>javax.wsdl.*</wls:package-name>
		<wls:package-name>javax.jws.*</wls:package-name>
		<wls:package-name>org.apache.xerces.*</wls:package-name>
	</wls:prefer-application-packages>
</wls:weblogic-application>

让weblogic优先选择javax.wsdl.*、javax.jws.*和org.apache.xerces.*这些包,指定对xml解析用到的类(不设置也没关系),让之前的war包加入EAP的类加载结构。
编辑EAP项目属性,在Deployment Assembly里加入wsdl4j、xmlParseAPIs和xercesImpl这三个jar包。
通过EAP项目打出ear包,就可以成功部署到weblogic 11g了。
  相关解决方案