不用解释太多,直接进入正题。现在我们写一个简单的服务端。
package com.wl.webservice;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @ClassName: Hello
* @Description: hello实体类
* @author WuLi
* @date 2015-2-3 下午2:29:14
*
*/
@XmlRootElement(name="Hello")
public class Hello {
private int sum;
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
package com.wl.webservice;
import javax.jws.*;
/**
* @ClassName: IHelloService
* @Description: 服务端点接口
* @author WuLi
* @date 2015-2-3 下午2:26:12
*
*/
@WebService
public interface IHelloService {
@WebResult(name="sum")
public Hello sum(@WebParam(name="a")int arg1,@WebParam(name="b")int arg2);
}
package com.wl.webservice;
/**
* @ClassName: IHelloServiceImpl
* @Description: IHelloService实现类
* @author WuLi
* @date 2015-2-3 下午2:27:47
*
*/
public class IHelloServiceImpl implements IHelloService {
public Hello sum(int arg1, int arg2) {
Hello hello = new Hello();
hello.setSum(arg1+arg2);
return hello;
}
}
接下来我们就直接调用main方法 来启动并访问http://127.0.0.1:8080/helloService?wsdl。这是因为cxf内置的jetty(servlet容器)的存在,所有一个main方法就能启动web服务。
try {
Endpoint.publish("http://localhost:8080/Hello", new IHelloServiceImpl());
} catch (Exception e) {
e.printStackTrace();
}
出现很长的一段xml内容,就是启动成功了。接下来我们用wsdl2java.bat。将wsdl转换为java类。
wsdl2java -p com.wl.client -d e:\ http://localhost:8080/Hello?wsdl
将它们放入IDE里面,然后就可以供客户端调用。客户端代码:
IHelloService service = new IHelloServiceImplService().getIHelloServiceImplPort();
System.out.println(service.sum(1, 2).getSum());
这就是WebService 使用HTTP 协议传输消息