最近公司让基于别的公司的接口写一个自己的接口,接口对于别的公司来说相当于客户端,但对于自己本公司要调用的程序来说,又相当于服务端。
闲来无事,总结下。
先从java自带的service开始
JAX-WS(java api xml webservice) 基于javaAPI的webService实现
用的工具是myeclipse
首先是服务端
1.新建webProject jax-wsServer 如图:
2.新建包和类如下图
既然是入门例子,咱就越简单越好,关键看好流程
IMService.java 内容如下
package com.jax.server;
public interface IMyService {
public int add(int a,int b);
public int minus(int a,int b);
}
MyServiceImpl.java内容如下
package com.jax.server;
public class MyServiceImpl implements IMyService {
public int add(int a, int b) {
// TODO Auto-generated method stub
return a+b;
}
public int minus(int a, int b) {
// TODO Auto-generated method stub
return a-b;
}
}
以上基本准备工作就算完成了,下边是应用MyEclipse具体生成的步骤。
1 右键 src-new others,选择web service 如图:
2.单击下一步,选择用JAX-WS方式,从java类创建,如图:
3.点击Next,选择要用到的类,就是我们刚才创建的MyServiceImpl,要是实体类。
选择在工程中生成wsdl,如图:
点击Finish。
4.右键工程,选择Properties,选择"Java Build Path",然后选择"Libraries",如图:
5.点击 Add Libraries,选择 MyEclipse Libraries,如下图:
6.点击Next,选择 JAX-WS,如图:
7.点击Finish,如下图:
8.点击OK,工程结构如下图:
9.至此,服务端程序生成完毕,部署到Tomcat下,启动Tomcat,访问地址http://localhost:8080/ProjectWS/WSServerPort?wsdl,如下图
出现如上图所示的wsdl页面了,说明本地服务已经启动,可以访问了。
对外地址是http://localhost:8080/jax-wsServer/MyServiceImplPort?wsdl
命名空间targetNamespace="http://server.jax.com/"
服务名 portType name="MyServiceImplDelegate"
提供两个方法 add和minus
这样完整的WebService服务端,就配置并发布完成了。
下边是jax-ws服务端的生成和调用方式。
1.可以新建工程(由于是测试,为了省事,这里和server用一个工程),右键src,选择web Service Client,如图:
2.选择web Service Client,点击Next,如下图:
3.点击Next,指定访问的webService的路径,就是我们刚才访问的地址,指定客户端文件的包
4.点击Next,如下图:
5.Finish完成,客户端文件生成完毕,结构如下:
6.编写测试类TestClient,代码如下
package com.jax.client;
public class TestClient {
public static void main(String []arg){
//服务的具体类,继承了service类
MyServiceImplService
service=new MyServiceImplService();
//服务的接口,通过getPort()方法得到
MyServiceImplDelegate se=service.getPort(MyServiceImplDelegate.class);
//通过服务的接口调用方法
int add=se.add(34, 23);
int minus=se.minus(34, 23);
System.out.println("34+23="+add);
System.out.println("34-23="+minus);
}
}
7.运行结果如下:
到此完整的关于 JAX-WS的服务端、客户端的生成调用的整个过程就完成了,与大家一起学习、共勉。
后续会还有CXF的详细过程。