1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法
package me.gacl.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
/**
* @author gacl
* 定义SEI(WebService EndPoint Interface(终端))
*/
//使用@WebService注解标注WebServiceI接口
@WebService
public interface WebServiceI {
//使用@WebMethod注解标注WebServiceI接口中的方法
@WebMethod
String sayHello(String name);
@WebMethod
String save(String name,String pwd);
}
2、编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法,如下所示:
package me.gacl.ws;
import javax.jws.WebService;
/**
* @author gacl
* SEI的具体实现
*/
//使用@WebService注解标注WebServiceI接口的实现类WebServiceImpl
@WebService
public class WebServiceImpl implements WebServiceI {
@Override
public String sayHello(String name) {
System.out.println("WebService sayHello "+name);
return "sayHello "+name;
}
@Override
public String save(String name, String pwd) {
System.out.println("WebService save "+name+", "+pwd);
return "save Success";
}
}
3.注入初始化
public class WebServicePublisher implements InitializingBean {
private static final Logger logger = LoggerFactory.getLogger(WebServicePublisher.class);
//"http://%s:8375/webServicePublisher";
private String publicUrl;
public void setPublicUrl(String publicUrl) {
this.publicUrl = publicUrl;
}
@Override
public void afterPropertiesSet() throws Exception {
WebServiceI callListener = new WebServiceImpl ();
// 调用Endpoint的publish方法发布Web Service
String url = String.format(publicUrl, IPUtil.getHostIpString());
Endpoint.publish(url, callListener);
logger.info(" >>> Web Service暴露成功!{}", url);
}
}
<bean id="webServicePublisher" class="me.gacl.ws.WebServicePublisher">
<property name="publicUrl" value="${webservice_url}"/>
</bean>