先创建好被调用的class类
/**
* Title: ServiceHello
* Description: 基于jdk1.6以上的javax.jws 发布webservice接口
@WebService - 它是一个注解,用在类上指定将此类发布成一个ws。
Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解
对象绑定到一个地址的端口上。
* Version:1.0.0
* @author panchengming
*/
@WebService
public class JwsServiceHello {
/** 供客户端调用方法 该方法是非静态的,会被发布
* @param name 传入参数
* @return String 返回结果
* */
public String getValue(String name){
return "欢迎你! "+name;
}
/**
* 方法上加@WebMentod(exclude=true)后,此方法不被发布;
* @param name
* @return
*/
@WebMethod(exclude=true)
public String getHello(String name){
return "你好! "+name;
}
/** 静态方法不会被发布
* @param name
* @return
*/
public static String getString(String name){
return "再见!"+name;
}
//通过EndPoint(端点服务)发布一个WebService
public static void main(String[] args) {
/*参数:1,本地的服务地址;
2,提供服务的类;
*/
Endpoint.publish("http://localhost:8080/Service/ServiceHello", new JwsServiceHello());
System.out.println("发布成功!");
//发布成功后 在浏览器输入 http://localhost:8080/Service/ServiceHello?wsdl
}
}
发布成功之后在cmd下输入
wsimport -keep -p com.demo.client -d D:\\(存放的地址) http://XX/Account?wsdl(wsdl地址)
示例: wsimport -s E:\java\web\src -p com.pcm.ws.jws -keep http://localhost:8080/Service/ServiceHello?wsdl
命令参数说明:
-d:生成客户端执行类的class文件的存放目录(默认存放在C:\Users\Administrator\)
-s:生成客户端执行类的源文件的存放目录(默认存放在C:\Users\Administrator\)
-p:定义生成类的包名
先可以在本项目上测试一下
public static void main(String[] args) {
//调用webservice
JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
String name=hello.getValue("ws");
System.out.println(name);
}
如果控制台打印出字符那说明成功
如果发布成功之后,别的项目想调用可以直接在cmd中将
wsimport -keep -p com.demo.client -d D:\\(存放的地址) http://XX/Account?wsdl(wsdl地址)
存放的地址写成想调用的那个项目地址 后面的http地址便是发布成功之后的地址