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:
Empfohlene Lösung
lib |- endorsed | jaxb-api-2.1.jar | jaxb-impl-2.1.6.jar | jaxb-xjc-2.1.6.jar
-Djava.endorsed.dirs=plugins/jameica.soap/lib/endorsed
-Djava.endorsed.dirs=plugins/jameica.soap/lib/endorsed