Inhaltsverzeichnis

Bekannte Probleme bei der Verwendung von jameica.soap mit Java 1.6

Der folgende Text beschreibt ein bekanntes Problem, welches auftreten kann, wenn das Plugin „jameica.soap“ auf einem System mit SUN Java 1.6 verwendet wird. Das Plugin verwendet die SOAP-Implementierung CXF aus dem Apache-Projekt.

Ursache des Fehler ist ein Versionskonflikt zwischen der von CXF verwendeten JAXB-Implementierung und der von SUN Java 1.6 bereits mitgelieferten Version. Das Problem ist bekannt und unter https://issues.apache.org/activemq/browse/SMX4-98 beschrieben.

Das Problem äussert sich durch folgende Fehlermeldung im Jameica-Log bzw. auf der Konsole:

[<Datum>][ERROR][de.willuhn.jameica.messaging.NamedQueue$Worker.send] consumer de.willuhn.jameica.soap.messaging.PublishServiceMessageConsumer$1 produced an error (javax.xml.ws.WebServiceException: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException) while consuming message [Fri May 15 13:18:49 CEST 2009] web server deployed
[<Datum>][INFO][de.willuhn.jameica.messaging.NamedQueue$Worker.send] error while processing message
javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException
        at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:265)
        at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
        at org.apache.cxf.jaxws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:84)
        at javax.xml.ws.Endpoint.publish(Endpoint.java:170)
        at de.willuhn.jameica.soap.messaging.PublishServiceMessageConsumer.publish(PublishServiceMessageConsumer.java:137)
        at de.willuhn.jameica.soap.messaging.PublishServiceMessageConsumer.access$200(PublishServiceMessageConsumer.java:29)
        at de.willuhn.jameica.soap.messaging.PublishServiceMessageConsumer$1.handleMessage(PublishServiceMessageConsumer.java:61)
        at de.willuhn.jameica.messaging.NamedQueue$Worker.send(NamedQueue.java:245)
        at de.willuhn.jameica.messaging.NamedQueue$Worker.run(NamedQueue.java:268)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
        at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:307)
        at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:345)
        at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:513)
        at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:396)
        at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:181)
        at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:163)
        at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:79)
        at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:114)
        at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:164)
        at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:334)
        at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:251)
        ... 8 more
Caused by: javax.xml.bind.JAXBException: property "com.sun.xml.bind.defaultNamespaceRemap" is not supported
        at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:78)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
        at javax.xml.bind.ContextFinder.find(ContextFinder.java:376)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
        at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContext(JAXBDataBinding.java:532)
        at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:287)
        ... 18 more

Derzeit existieren folgende Lösungsmöglichkeiten für dieses Problem:

Update von Java und jameica.soap

Empfohlene Lösung

Downgrade auf Java 1.5

Nutzung des Endorsed-Mechanismus von Java

  lib
   |- endorsed
   |    jaxb-api-2.1.jar
   |    jaxb-impl-2.1.6.jar
   |    jaxb-xjc-2.1.6.jar