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