最近在弄一些数据共享的问题,也就是一个系统的数据要和另一个系统的数据共享,采用webservice可以解决。
我采用的是xfire实现的,当然也可以axis等实现,不过我觉得还是xfire简单些,更容易入门。
首先大家不必被webservice吓到,其实它就是一个工程提供服务(方法),另一个工程调用这个服务里的方法,得到数据(方法的返回值)。
两个工程,其中toa充当提供服务,aj用来调用。
T_Company属于实体类
ToAj是个接口。
ToAjImpl是接口的实现类。
用xfire实现的原理:
服务端:提供接口和实现类,并且在services.xml里边配置对应的路径。接口和实现类在此略过,主要看下xml里边的配置,如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>list</name>
<serviceClass>service.company.ToAj</serviceClass>
<implementationClass>service.company.ToAjImpl</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>session</scope>
</service>
</beans>
其中<serviceClass>这个节点放的是接口的路径
<implementationClass>放的是实现类路径
下面的节点都是些范围。
调用工程:
调用工程只要配置与提供服务工程相同的接口(不配实现类)和实体类就可以了(此处注意:路径必须相同,而且必须要放到service下(有待考证,反正我是放外面试了不成功))
说下调用端类HelloService.java
public class HelloService {
public void testService1(T_Company objCompany) {
Service srvcModel = new ObjectServiceFactory().create(ToAj.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String helloWorldURL = "http://192.168.1.237:8080/toa/services/list";
try {
ToAj srvc = (ToAj) factory.create(srvcModel, helloWorldURL);
//传对象
System.out.print("返回String "+srvc.addCompany1(objCompany));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
helloWorldURL这个变量就是服务端的url,(服务工程所在机器IP+端口号+工程名+services+服务工程里services.xml里边配置的name(不知道name是啥的返回前面看services.xml))
到此就配置完成了。启动两个工程。
如果访问
http://192.168.1.237:8080/toa/services/list?wsdl出现xml页面,那恭喜您,配置成功。
代码民工,不怎么会说话。
人老了,为啥现在学东西就没有以前的激情了。。。。。。
我采用的是xfire实现的,当然也可以axis等实现,不过我觉得还是xfire简单些,更容易入门。
首先大家不必被webservice吓到,其实它就是一个工程提供服务(方法),另一个工程调用这个服务里的方法,得到数据(方法的返回值)。
两个工程,其中toa充当提供服务,aj用来调用。
T_Company属于实体类
ToAj是个接口。
ToAjImpl是接口的实现类。
用xfire实现的原理:
服务端:提供接口和实现类,并且在services.xml里边配置对应的路径。接口和实现类在此略过,主要看下xml里边的配置,如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>list</name>
<serviceClass>service.company.ToAj</serviceClass>
<implementationClass>service.company.ToAjImpl</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>session</scope>
</service>
</beans>
其中<serviceClass>这个节点放的是接口的路径
<implementationClass>放的是实现类路径
下面的节点都是些范围。
调用工程:
调用工程只要配置与提供服务工程相同的接口(不配实现类)和实体类就可以了(此处注意:路径必须相同,而且必须要放到service下(有待考证,反正我是放外面试了不成功))
说下调用端类HelloService.java
public class HelloService {
public void testService1(T_Company objCompany) {
Service srvcModel = new ObjectServiceFactory().create(ToAj.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String helloWorldURL = "http://192.168.1.237:8080/toa/services/list";
try {
ToAj srvc = (ToAj) factory.create(srvcModel, helloWorldURL);
//传对象
System.out.print("返回String "+srvc.addCompany1(objCompany));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
helloWorldURL这个变量就是服务端的url,(服务工程所在机器IP+端口号+工程名+services+服务工程里services.xml里边配置的name(不知道name是啥的返回前面看services.xml))
到此就配置完成了。启动两个工程。
如果访问
http://192.168.1.237:8080/toa/services/list?wsdl出现xml页面,那恭喜您,配置成功。
代码民工,不怎么会说话。
人老了,为啥现在学东西就没有以前的激情了。。。。。。