服务端构建
一、首先创建web工程。
新建->web project
二、在src下新建floder目录结构如下:
wsxfire
src
META-INF
xfire
services.xml
对于services.xml可以从别的地方copy过来,也可以自己写,内容结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service xmlns="http://xfire.codehaus.org/config/1.0">
<serviceClass>
service.OutInterface
</serviceClass>
<implementationClass>
service.OutImpl
</implementationClass>
<serviceFactory>jsr181</serviceFactory>
</service>
....
....
</beans>
*上面的目录,包括文件名都要完全一致。
三、创建一个接口,与一个实现类。结构如下
wsxfire
src
com
OutImpl.java
OutInterface.java
META-INF
xfire
services.xml
1.services.xml中serviceClass标签的内容就是包名+接口名,而implementationClass标签的内容就是包名+实现类名。
2.OutInterface.java写法与普通接口不同的是加上注解,如下:
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService
public interface OutInterface {
@WebMethod
@WebResult(name = "results")
public String open(@WebParam(name = "systemType")String para);
}
对于@WebResult(name = "results") 的name参数的内容results是实现方法的返回值名,(@WebParam(name = "systemType")systemType为实现方法的参数名字。这两个名字是给客户端用的。
3.OutImpl.java实现类与普通实现类一样没有什么别的说法,如下:
public String open(String para) {
System.out.print(para);
return para;
}
四、修改web.xml,增加servlet,如下
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
这些都是xfire平台需要的。
五、引入xfire的jar包
去网上找找xfire包,解压后主要包括 xfire-all-1.2.6.jar,xfire-core-1.2.2.jar,xfire-annotations-1.2.2.jar,xfire-jsr181-api-1.0-M1.jar,
xfire-spring-1.2.2.jar
这样就ok了,发布到tomcat下,然后访问http://127.0.0.1:端口/工程名/services/就可以看到你发布的接口列表就成功了,点击某个wsdl就是可供生成客户端的wsdl的url了。
客户端构建
一、新建web service工程,由于是在myeclipse下搭建,所以按照人家的规范走IDE才能帮你自动创建(无非是帮你创建几个class)。
二、新建web services client,按照向导选择工程,选择wsdl,可以选择文件也可以选择url,这时就可以把刚才建服务端后发布的wsdl的url地址输入进去,选择生成java文件的包名,一路next 就OK了。
三、在生成的文件中有个名字叫*Client.java,这个文件就是客户端工具文件,他会在里边自动创建main方法测试。
OutInterfaceClient client = new OutInterfaceClient();
OutInterfacePortType service = client.getOutInterfaceHttpPort();
service.后面的东西就是接口定义的方法名,调用接口执行。
虽然这样就可以了,但有个地方大家几乎都会用到,就是返回值不是基本类习惯,而是个javabean对象该怎么办?
服务端返回接口照常写,例如
public VoPojo getVo(){
.....
return new VoPojo();
}
按照上面的方法生成客户端时就会自动生成该对象VoPojo类与服务器段对应,原理是他会根据xml定义的javabean生成jaxb的映射文件,然后通过xml解析成对象使用。
在客户端调用即可。
一、首先创建web工程。
新建->web project
二、在src下新建floder目录结构如下:
wsxfire
src
META-INF
xfire
services.xml
对于services.xml可以从别的地方copy过来,也可以自己写,内容结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service xmlns="http://xfire.codehaus.org/config/1.0">
<serviceClass>
service.OutInterface
</serviceClass>
<implementationClass>
service.OutImpl
</implementationClass>
<serviceFactory>jsr181</serviceFactory>
</service>
....
....
</beans>
*上面的目录,包括文件名都要完全一致。
三、创建一个接口,与一个实现类。结构如下
wsxfire
src
com
OutImpl.java
OutInterface.java
META-INF
xfire
services.xml
1.services.xml中serviceClass标签的内容就是包名+接口名,而implementationClass标签的内容就是包名+实现类名。
2.OutInterface.java写法与普通接口不同的是加上注解,如下:
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService
public interface OutInterface {
@WebMethod
@WebResult(name = "results")
public String open(@WebParam(name = "systemType")String para);
}
对于@WebResult(name = "results") 的name参数的内容results是实现方法的返回值名,(@WebParam(name = "systemType")systemType为实现方法的参数名字。这两个名字是给客户端用的。
3.OutImpl.java实现类与普通实现类一样没有什么别的说法,如下:
public String open(String para) {
System.out.print(para);
return para;
}
四、修改web.xml,增加servlet,如下
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
这些都是xfire平台需要的。
五、引入xfire的jar包
去网上找找xfire包,解压后主要包括 xfire-all-1.2.6.jar,xfire-core-1.2.2.jar,xfire-annotations-1.2.2.jar,xfire-jsr181-api-1.0-M1.jar,
xfire-spring-1.2.2.jar
这样就ok了,发布到tomcat下,然后访问http://127.0.0.1:端口/工程名/services/就可以看到你发布的接口列表就成功了,点击某个wsdl就是可供生成客户端的wsdl的url了。
客户端构建
一、新建web service工程,由于是在myeclipse下搭建,所以按照人家的规范走IDE才能帮你自动创建(无非是帮你创建几个class)。
二、新建web services client,按照向导选择工程,选择wsdl,可以选择文件也可以选择url,这时就可以把刚才建服务端后发布的wsdl的url地址输入进去,选择生成java文件的包名,一路next 就OK了。
三、在生成的文件中有个名字叫*Client.java,这个文件就是客户端工具文件,他会在里边自动创建main方法测试。
OutInterfaceClient client = new OutInterfaceClient();
OutInterfacePortType service = client.getOutInterfaceHttpPort();
service.后面的东西就是接口定义的方法名,调用接口执行。
虽然这样就可以了,但有个地方大家几乎都会用到,就是返回值不是基本类习惯,而是个javabean对象该怎么办?
服务端返回接口照常写,例如
public VoPojo getVo(){
.....
return new VoPojo();
}
按照上面的方法生成客户端时就会自动生成该对象VoPojo类与服务器段对应,原理是他会根据xml定义的javabean生成jaxb的映射文件,然后通过xml解析成对象使用。
在客户端调用即可。