Benutzer-Werkzeuge

Webseiten-Werkzeuge


plugin:soap:java6

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

  • Aktualisieren Sie Ihre Installation von SUN Java auf die Version 1.6.0_14 (oder höher)
  • Aktualisieren Sie das Plugin „jameica.soap“ auf eine aktuelle Version (Build-Datum ab 03.06.2009). Diese Version enthält eine aktuelle Release von Apache CXF (2.2.2 statt wie bisher 2.1.1).

Downgrade auf Java 1.5

Nutzung des Endorsed-Mechanismus von Java

  • Öffnen Sie das Verzeichnis [jameica|hibiscus-server]/plugins/jameica.soap/lib
  • Erstellen Sie dort ein Unterverzeichnis mit dem Namen „endorsed“
  • Verschieben Sie jetzt die drei Jar-Dateien, deren Name mit „jaxb-“ beginnt in dieses neue Unterverzeichnis.
  lib
   |- endorsed
   |    jaxb-api-2.1.jar
   |    jaxb-impl-2.1.6.jar
   |    jaxb-xjc-2.1.6.jar
  • Öffnen Sie nun das Shell-Script, mit dem Sie den Server starten („jameicaserver.sh“, „jameica.sh“ oder „rcjameica“) in einem Texteditor.
    1. Falls jameicaserver.sh oder jameica.sh:
      Fügen Sie zwischen „$_JCONSOLE“ und „-Djava.library…“ folgendes ein:
      -Djava.endorsed.dirs=plugins/jameica.soap/lib/endorsed
    2. Falls rcjameica:
      Fügen Sie hinter „-Xmx256m“ folgendes ein:
      -Djava.endorsed.dirs=plugins/jameica.soap/lib/endorsed
  • Starten Sie Jameica jetzt neu. Die Webservices sollten nun deployed und unter „https:<server>:8080/soap/“ samt WSDL-Dateien aufgelistet werden. ==== Deinstallation des Plugins „jameica.soap“ ==== Entfernen Sie die SOAP-Plugins, falls diese nicht benötigt werden. Löschen Sie hierzu die Verzeichnisse „jameica.soap“ und „hibiscus.soap“ aus dem Verzeichnis „[jameica|hibiscus-server]/plugins“.


Impressum | Datenschutz
plugin/soap/java6.txt · Zuletzt geändert: d.m.Y H:i von willuhn