Vitalij Zadneprovskij Vitalij Zadneprovskij - 7 days ago 5
Java Question

Weblogic Spring WS deploy class cast exception

I am using WebLogic Server: 12.1.1.0, Spring 3.2.11.RELEASE and Camel 2.13.4.

My

weblogic.xml
is:

<?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>


On deploy I get the following 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)


Related questions are:


Answer

The correct weblogic.xml is:

<?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>

Exclude slf4j and jaxb-impl, in all your Camel dependencies. For example:

    <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>
Comments