Hi,

You need to use the bus of the CXFServlet. You could use the CXF Servlet
transport with this bus.
Please add the below code just  before Endpoint.publish(...)

Bus bus = cxf.getBus();
BusFactory.setDefaultBus(bus);

Willem.
 

Miguel De Anda-2 wrote:
> 
> i've got an application (my server) that launches its own jetty server for 
> sending files to external nodes. they currently talk to each other using 
> simple xml passed in as a post request and in the response. the external 
> nodes don't run a web server of any kind.
> 
> i now need to add a soap interface on my server but can't figure out how.
> this 
> is how my jetty server is started:
> 
> ServletHolder servlet;
> org.mortbay.jetty.Server jettyServer = 
>       new org.mortbay.jetty.Server(PORT);
> Context root = new Context(jettyServer, "/", Context.SESSIONS);
> ....
> servlet = new ServletHolder(someServlet);
> root.addServlet(servlet, "/*");
> ....
> CXFServlet cxf = new CXFServlet();
> servlet = new ServletHolder(cxf);
> servlet.setName("soap");
> servlet.setForcedPath("soap");
> root.addServlet(servlet, "/soap/*");
> HelloWorld hw = new HelloWorldImpl();
> Endpoint.publish("/soap/HelloWorld", hw);
> jettyServer.start();
> 
> ----------------------------
> package a.b.c;
> import javax.jws.WebService;
> @WebService
> public interface HelloWorld {
>       String sayHi(String text);
> }
> ----------------------------
> import javax.jws.WebService;
> @WebService(endpointInterface = "a.b.c.HelloWorld")
> public class HelloWorldImpl implements HelloWorld {
>       public String sayHi(String text) {
>               return "The interesting question becomes is what is soap?";
>       }
> }
> ----------------------------
> 
> i got errors ranging from a null pointer exception when i went to 
> http://localhost:PORT/soap/ to "/soap/HelloWorld" not being a valid url
> (in 
> the line Endpoint.publish). i had to set a full url there, when i 
> used "http://localhost:PORT/soap/HelloWorld"; it told me that the port was 
> being used, so i figured its launching its own internal instance of jetty
> (or 
> whatever it uses). i then replaced the port to some 8087 and it almost
> works, 
> but i get a "<faultstring>No such operation: </faultstring>" message when 
> viewing http://localhost:8087/soap/HelloWorld
> 
> i would really like to be able to use the same jetty server, and be able
> to 
> give access to my existing objects in my application. i'm using spring to 
> load up an object that has all of my configuration settings but not in the 
> same way you would in a typical web app that runs on a webserver. the 
> customer currently has access to that spring config file and it would be 
> wrong to give them access (or force them to configure) the soap services.
> 
> in other words, my app is launched this way:
> public static void main(...) {
>   Resource resource = new FileSystemResource(config);
>   BeanFactory factory = new XmlBeanFactory(resource);
>   Config config = (Config)factory.getBean(bean);
>   configApp(config);
>   startServices();
> }
> 
> 
> Actual error messages:
> (using /soap/... in publish line)
> Caused by: java.net.MalformedURLException: no protocol: /soap/HelloWorld
>         at java.net.URL.<init>(URL.java:567)
>         at java.net.URL.<init>(URL.java:464)
>         at java.net.URL.<init>(URL.java:413)
>         at 
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.<init>(JettyHTTPDestination.java:87)
>         at 
> org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory.createDestination(JettyHTTPTransportFactory.java:96)
>         at 
> org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory.getDestination(JettyHTTPTransportFactory.java:83)
>         at 
> org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:74)
>         at 
> org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:90)
>         at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:69)
>         at 
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:108)
>         ... 8 more
> 
> (using http://...:PORT/ in publish line)
> Exception in thread "main" java.net.BindException: Address already in use
>         at java.net.PlainSocketImpl.socketBind(Native Method)
>         at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
> 
> **********************************************************************
> 
> This email, its content and any attachments is PRIVATE AND 
> CONFIDENTIAL to TANDBERG Television, Part of the Ericsson Group. 
> If received in error please notify the sender and destroy the original 
> message and attachments.
> 
> www.tandbergtv.com
> **********************************************************************
> 
> 

-- 
View this message in context: 
http://www.nabble.com/undocumented-configuration-with-jetty-tf4688264.html#a13407166
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to