eclipse的版本
去这个url官网下载
http://cxf.apache.org/download.html
然后配置环境变量
添加到path
以上都是准备工作,eclipse用来编写普通的java的pojo,然后利用cxf包发布wsdl。这样服务端的项目发布了wsdl以后,自己的使命就完成了。
然后我们需要一个client项目,在client所在的pc上使用cmd命令行使用cxf的命令,将wsdl转换成java。将上述java文件导入到client项目中。然后在client项目上使用服务端的web service。
下面我们来截图描述上述过程:
首先为我们的eclipse配置cxf的runtime也就是我们刚刚下载解压缩配置环境变量的CXF_HOME,如下图
然后为我们的项目,也就是服务端的项目,添加cxf的支持,如下图:
经过上述配置,我们的服务端的项目中的pojo代码,就可以使用cxf的jar了。
然后我们开始编码,写一个简单的服务,也就是pojo也就是以后被发布成web service的java类。
写完以后如下所示:
我们看一下代码的具体内容,三个文件
- SlashInterface.java接口
- SlashImplement.java实现类(服务本身)
- DentalPOJO.java发布webservice的发布类
然后代码如下:
SlashInterface.java
package com.dental;
import javax.jws.WebService;
@WebService
public interface SlashInterface {
int add(int a,int b);
String strAdd(String a,String b);
}
SlashImplement.java
package com.dental;
import javax.jws.WebService;
@WebService(endpointInterface="com.dental.SlashInterface",serviceName="skss")
public class SlashImplement implements SlashInterface {
@Override
public int add(int a, int b) {
// TODO Auto-generated method stub
return a + b + 25;
}
@Override
public String strAdd(String a, String b) {
// TODO Auto-generated method stub
return a + b;
}
}
DentalPOJO.java发布类
package com.dental;
import javax.xml.ws.Endpoint;
public class DentalPOJO {
public static void main(String[] args) {
//新建一个服务类的实例
SlashImplement sim = new SlashImplement();
//配置一个地址
String address = "http://localhost:6054/skss";
//发布web service
Endpoint.publish(address, sim);
//调试辅助信息
System.out.println("great baby-------------");
}
}
经过上述配置和编码,我们已经准备好了服务器端的内容。下面我们发布wsdl:
现在,发布完成了。我们需要去浏览器上看看这个wsdl文件:
好的,下面我们准备client端的工作了。
事实上,我们在同一个PC上的同一个eclipse上进行编码。但是我们在本文中,涉及到两个eclipse上的项目。
服务器端
客户端
下面我们来默认客户端的eclipse上的项目如何使用web service
我们现在已经知道web service的wsdl是http://localhost:6054/skss?wsdl
我们使用命令行执行cxf的命令,如下图所示:
执行完命令以后会在目录下创建一个文件夹结构以及一堆java代码。
我们看到,上图所示的文件夹就是cxf帮我们创建的。
下面我们将上述的所有java文件及文件夹结构复制到我们的eclipse的workspace中
复制的目的地,是eclipse上的另一个项目,我们称它为client项目。
然后我们在这个client项目上利用testNG生成一个测试类。
测试类的代码如下:
package com.dental;
import org.testng.annotations.Test;
public class SkssTest {
@Test
public void f() {
//web service的具体stub
Skss s1 = new Skss();
//stub的实例化
SlashInterface sim = s1.getSlashImplementPort();
//执行web service方法
int iresult = sim.add(999, 100);
System.out.println("result is:"+iresult);
}
}
我们执行这个testNG的测试类的测试方法f()
我们的client项目正确的调用了server端的web service
另外,eclipse的console本身,实际上对于不同项目有不同的窗体:
也就是这样,我们发布webservice,