CXF实现服务的发布

jopen 8年前

  在之前也谢了几篇关于CXF进行服务的发布的文章,基于Spring以及基于jetty 

    本文同样实现基于Jetty内置服务器进行服务的发布,主要解决的问题就是发布出来的WSDL中方法参数名称不一致的问题

接口文件:

package demo.hw.server;    import javax.jws.WebMethod;  import javax.jws.WebParam;  import javax.jws.WebResult;  import javax.jws.WebService;    @WebService  public interface HelloWorld {      @WebMethod      @WebResult(name="callBack")      String sayHi(@WebParam(name="username")String username);    }

实现类:

package demo.hw.server;    public class HelloWorldImpl implements HelloWorld {        public String sayHi(String text) {          System.out.println("sayHi called");          return "Hello " + text;      }  }

发布:(1)

package demo.hw.server;      import javax.xml.ws.Endpoint;    public class Server {     public static void main(String args[]) throws Exception {    Endpoint endpoint = Endpoint.publish(      "http://localhost:8080/WSCXF/helloService",      new HelloWorldImpl());// 这里是实现类    System.out.println("WS发布成功!");     }  }

 

发布(2)

HelloWorldImpl helloworldimp = new HelloWorldImpl();    JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();    factoryBean.setAddress("http://localhost:8080/WSCXF/helloService");    factoryBean.setServiceClass(HelloWorld.class);//接口类    factoryBean.setServiceBean(helloworldimp);    factoryBean.create();


实现结果:
http://localhost:8080/WSCXF/helloService?wsdl

CXF实现服务的发布


  总结: 在之前探究了一段时间,实现了Spring无注解的发布服务,并实现了拦截器等功能,但是现在项目需求能够对服务进行控制,能够控制启动和停止,于是个人认为利用内置 Jetty服务器则可以实现对服务的控制,这样的话就需要进行注解编程,个人在探索中学习,如果童靴你又好的方法,希望能够分享一下。