Search code examples
weblogicjax-ws

Weblogic Jaxws deployment - class does not support JDK1.5


WebLogic Server Version: 10.3.6.0

Spring version: 3.2.1.RELEASE

Java JDK 1.6

I am trying to deploy a Spring application as WAR that uses jaxws into a Weblogic server. The application works well with Jetty. However when deploying(I mean starting deployed app) Weblogic following exception occurs:

Caused By: java.lang.UnsupportedOperationException: This class does not support JDK1.5
        at weblogic.xml.jaxp.RegistryTransformerFactory.setFeature(RegistryTransformerFactory.java:317)
        at com.sun.xml.ws.util.xml.XmlUtil.newTransformerFactory(XmlUtil.java:392)
        at com.sun.xml.ws.util.xml.XmlUtil.newTransformerFactory(XmlUtil.java:400)
        at com.sun.xml.ws.util.xml.XmlUtil.<clinit>(XmlUtil.java:233)
        at org.jvnet.jax_ws_commons.spring.SpringService.getObject(SpringService.java:36

.

maven pom.xml

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.2.10</version>
    </dependency>
<dependency>
<groupId>org.jvnet.jax-ws-commons.spring</groupId>
    <artifactId>jaxws-spring</artifactId>
    <version>1.9</version>
</dependency>

Weblogic.xml

<weblogic-web-app>
<context-root>/MyApp</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>

Solution

  • It is being fixed by changing weblogic.xml

     <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
        <prefer-application-packages>
            <package-name>com.sun.xml.ws.server.*</package-name>
        </prefer-application-packages>
      </container-descriptor>
    

    And in init servlet (if you use the old style) you should change the way you acquire the context as:

                private static WebApplicationContext context;
    
                @Override
                public void contextInitialized(ServletContextEvent sce) {
    
                    ServletContext sc = sce.getServletContext(); 
                    this.context = WebApplicationContextUtils.getWebApplicationContext(sc);  
    
                    ...
                }
    
                public static WebApplicationContext getApplicationContext(){
                    return context;
                }
    

    That fixes it