您的位置:首页 > 编程语言 > Java开发

java自带webservice功能实现Javax.jws.WebService--JAX-WS

2016-12-17 11:35 453 查看
Java自带功能建立webservice   通过main方法发布接口

第一步:创建接口类

package ws;

import javax.jws.WebService;

/**

 * 接口

 * @author LM

 */

@WebService

public interface MyService {

public int add(int x,
int y);

public int dec(int x,
int y);

}

第二步:接口的实现类

package ws;

import javax.jws.WebService;

/**

 * 实现类

 * @author Administrator

 *对外开放的接口实现类,同样需要@WebService注解,如果该类同时实现了其他接口

 *则必须加上endpointInterface参数指定接口

 *targetNamespace指定targetNamespace 待会儿在调用的时候会使用

 */

@WebService(endpointInterface =
"ws.MyService",targetNamespace="www.baidu.com")

public class MyServiceImpl
implements MyService {

@Override

public int add(int x,
int y) {

System.out.println(x +
"+" + y +
"=" + (x + y));

return x + y;

}

@Override

public int dec(int x,
int y) {

System.out.println(x +
"-" + y +
"=" + (x - y));

return x - y;

}

}

第三步:

package ws;

import javax.xml.ws.Endpoint;

/**

 * 发布接口

 * @author LM

 */

public class ServicePublic {

public static void main(String[]
args)  throws Exception

{

//这里有一个前提 是8083端口没有被占用着  如果8083在占 就换一个

 Endpoint.publish("http://localhost:8083/wcms/",
new MyServiceImpl());

}

}

第四步:浏览器访问:http://localhost:8083/wcms/






 

其中:

WSDL:

http://localhost:8083/wcms/?wsdl

这个是webservice的各种描述  点击进入



 

 

会出现这个  targetNamespace是在实现接口的时候指定的

 

最后一步:测试接口  控制台输出3
就对了

package ws;

import java.net.URL;

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

public class TestClient {

 public static void main(String[] args)  throws Exception

 {

 URL url=new URL("http://localhost:8083/wcms/?wsdl");

//这里的第一个参数是targetNamespace  <
bd04
/span>第二个是实现的service

 QName qName=new QName("www.baidu.com", "MyServiceImplService");

 Service service=Service.create(url, qName);

 MyService my=service.getPort(MyService.class);

 System.out.println(my.add(1, 2));

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: