Weblogic Spring WS部署类强制转换异常

时间:2015-04-22 11:27:17

标签: java spring apache-camel weblogic12c

我正在使用WebLogic Server:12.1.1.0,Spring 3.2.11.RELEASE和Camel 2.13.4。

我的weblogic.xml是:

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app.xsd"
 xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
     <container-descriptor>
         <prefer-web-inf-classes>true</prefer-web-inf-classes>
     </container-descriptor>
 </weblogic-web-app>

在部署时,我得到以下stacktrace:

[HTTP:101216]Servlet: "spring-ws" failed to preload on startup in Web application: "camelweblogic.war".
org.springframework.beans.factory.BeanCreationException: Invocation of init method failed;
nested exception is java.lang.ClassCastException: weblogic.xml.stax.XMLStreamInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at org.springframework.ws.support.DefaultStrategiesHelper.instantiateBean(DefaultStrategiesHelper.java:188)
at org.springframework.ws.support.DefaultStrategiesHelper.getDefaultStrategies(DefaultStrategiesHelper.java:134)
at org.springframework.ws.server.MessageDispatcher.initEndpointAdapters(MessageDispatcher.java:426)
at org.springframework.ws.server.MessageDispatcher.setApplicationContext(MessageDispatcher.java:156)

相关问题是:

1 个答案:

答案 0 :(得分:0)

正确的weblogic.xml是:

<?xml version="1.0" encoding="ISO-8859-1"?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app.xsd"
    xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>

        <prefer-application-resources>

            <resource-name>META-INF/services/com.sun.xml.ws.spi.db.BindingContextFactory
            </resource-name>

            <resource-name>META-INF/services/javax.xml.bind.JAXBContext
            </resource-name>
        </prefer-application-resources>
    </container-descriptor>
</weblogic-web-app>

在所有Camel依赖项中排除slf4j和jaxb-impl。例如:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spring-ws</artifactId>
        <version>2.13.4</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
            <exclusion>
                <artifactId>jaxb-impl</artifactId>
                <groupId>com.sun.xml.bind</groupId>
            </exclusion>
        </exclusions>
    </dependency>