Hi Fabian, What version of CXF are you using? I know there was a slight bug with this at some point (i.e. Endpoint.publish() doesn't find the correct CXF instance which is associated with the CXFServlet), so that may be part of the problem.
But more likely is that you're registering the service with http://localhost:8080/ and the servlet may expect you to register http://localhost/ - since there is no way to query the port of the servlet from the servlet apis, we just assume that http://localhost/ maps to the servlet whenever the CXFServlet is registered. Whats *really* recommend is just seting the address to "/services/fooEndpoint" though and leaving the host out of it all together: Endpoint.publish("/services/fooEndpoint", new MyServiceImpl()); CXF assumes HTTP by default if no host is present. Let me know if any of those suggestions work! - Dan On 5/30/07, Fabian <[EMAIL PROTECTED]> wrote:
Hi! I started to have a look at CXF today. In XFire I was able to start a Jetty HTTPServer, register the XFireServlet and later make services available via the XFire ServiceRegistry.So I was able to use a Jetty HTTPServer I created myself. I would like to do the same with CXF. Using the JaxWsServerFactoryBean as suggested in the Migration Guide does not work because I want to reuse the HTTPServer I already have and don't want to start a new one (under another port). So I thought the CXFServlet should be the proper replacement. But I am not sure what I need to do to register a new service. Calling Endpoint.create() as explained in http://cwiki.apache.org/CXF20DOC/servlet-transport.html does not work. (I can request the service list at http://localhost:8080/services but the list is empty). So I guess I have to do something with my Endpoint but what? // jetty Server httpServer = new Server(8080); Context xfireContext = new Context(httpServer, "/services"); xfireContext.addServlet(CXFServlet.class.getName(), "/*"); httpServer.start(); // register service String uri = "http://localhost:8080/services/" + ServiceImplementation.class.getSimpleName(); Endpoint.create(uri, new ServiceImplementation()); Maybe one of you can give me a tip which way to go here. Thanks! Fabian P.S. In XFire it worked like this Server httpServer = new Server(8080); Context xfireContext = new Context(httpServer, "/services"); xfireContext.addServlet(XFireServlet.class.getName(), "/*"); httpServer.start(); [....] XFire xfire = XFireFactory.newInstance().getXFire(); // create service AnnotationServiceFactory factory = new AnnotationServiceFactory(xfire.getTransportManager()) Service service = factory.create(serviceImplementation.getClass()); service.setInvoker(new BeanInvoker(serviceImplementation)); // register ServiceRegistry serviceRegistry = xfire.getServiceRegistry() serviceRegistry.register(service);
-- Dan Diephouse Envoi Solutions http://envoisolutions.com | http://netzooid.com/blog
