Benutzer-Werkzeuge

Webseiten-Werkzeuge


plugin:soap:java6

Dies ist eine alte Version des Dokuments!


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

Der folgende Text beschreibt ein bekanntes Problem, welches auftritt, 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 drei Workarounds für dieses Problem:

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.1242387254.txt.gz · Zuletzt geändert: d.m.Y H:i von willuhn