Publication de WS avec Jonas

Publication de WS avec Jonas - Java - Programmation

Marsh Posté le 06-01-2012 à 10:02:48    

Bonjour
J'essaie de créer un web service sur Jonas 5.2.0.
Si j'utilise les méthodes "statiques" (annotations @WebService et configuration par CXFServlet),
ça marche très bien, mais le problème est que je dois créer dynamiquement un nombre indéterminé
de web services sur des urls différents en fonction des serveurs auxquels je vais me connecter
(mes services sont en fait des EventConsumer de notifications de WS où je m'abonne).
Je dois donc a priori utiliser la technique "à la main" via Endpoint.publish.
Le problème alors est que Jonas me dit qu'il ne trouve pas le connecteur Jetty :
 
2012-01-05 12:37:38,382 : ReflectionServiceFactoryBean.buildServiceFromClass : Creating Service {http://acs.bar.foo.com/}EventConsumerEndpointService from class com.foo.rd.events.EventConsumer
[ERROR] 2012-01-05 12:37:38,710 - pb publish http://localhost:9000/test/EventConsumer
java.lang.NoClassDefFoundError: org/mortbay/jetty/Connector
        at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory.createJettyHTTPServerEngine(JettyHTTPServerEngineFactory.java:243)
        at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.retrieveEngine(JettyHTTPDestination.java:116)
        at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.finalizeConfig(JettyHTTPDestination.java:151)
        at org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory.createDestination(JettyHTTPTransportFactory.java:123)
        at org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory.getDestination(JettyHTTPTransportFactory.java:103)
        at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:92)
        at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:71)
        at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:106)
        at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:177)
        at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:403)
        at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:310)
        at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:234)
        at org.apache.cxf.jaxws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:112)
        at javax.xml.ws.Endpoint.publish(Endpoint.java:47)
        at com.foo.bar.acs.EventConsumerEndpoint.publish(EventConsumerEndpoint.java:62)
        at com.foo.bar.acs.ACSProxyFactory$ACSProxyCreatorThread.run(ACSProxyFactory.java:222)
Caused by: java.lang.ClassNotFoundException: org.mortbay.jetty.Connector not found by org.apache.cxf.bundle [120]
        at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
        at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
        at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        ... 16 more
 
Ma librairie Jetty est bien dans la config standard de Jonas : jonas-full-5.2.0\repositories\maven2-internal\org\mortbay,
j'ai essayé de la tirer dans mon war, de la mettre en lib/common|ext... rien n'y fait.
Quelqu'un a t'il une solution ou pourrait-il m'indiquer comment court-circuiter CXF pour utiliser une autre
librairie que Jetty ?
 
PS : code de mon implémenteur :

Code :
  1. //@WebService(targetNamespace = "http://foo.com/acs/events", name = "EventConsumer", serviceName = "EventConsumer" )
  2. // si je décommente ça marche
  3. public class EventConsumerEndpoint implements EventConsumer {
  4. ...
  5. public void publish() {
  6.  try {
  7.   endpoint = Endpoint.publish(getUrl(), this);
  8.  } catch (Throwable e) {
  9.   logger.error("pb publish " + getUrl(), e);
  10.  }
  11. }


Merci

Reply

Marsh Posté le 06-01-2012 à 10:02:48   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed