xfire webService客户端怎么onclick传递对象参数数

2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2015年1月 扩充话题大版内专家分月排行榜第二
2014年12月 扩充话题大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。xfire+spring+maven构建webservice服务器和客户端
- ITeye博客
博客分类:
文章主要介绍:
1:用xfire+spring+maven构建webservice服务器。
2:用xfire的eclipse插件生成客户端访问方式。
3:以知接口和bean生成客户端。
4:客户端动态访问。包括返回java自定义对象。
1:用xfire+spring+maven构建webservice服务器。
(一)肯定首先配置spring上下文监听器和xfire的servert配置,将下列代码加入web.xml中:
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"&
&display-name&webservice&/display-name&
&!-- springmvc 上下文监听器 ContextLoaderListener --&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:spring/*.xml&/param-value&
&/context-param&
&!-- springmvc 上下文监听器
ContextLoaderListener--&
&servlet-name&xfire&/servlet-name&
&servlet-class&
org.codehaus.xfire.spring.XFireSpringServlet
&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&xfire&/servlet-name&
&url-pattern&/service/*&/url-pattern&
&/servlet-mapping&
&/web-app&
(二)配置 spring的配置文件,最基本的包括导入xfire.xml和baseWebService,剩余2个bean是自定义的webservice接口和实现类。代码如下:
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&
&import resource="classpath:org/codehaus/xfire/spring/xfire.xml" /&
&bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true"&
&property name="serviceFactory" ref="xfire.serviceFactory" /&
&property name="xfire" ref="xfire" /&
&bean id="bookWS" class="com.xiaoji.webservice.xfire.service.impl.BookServiceImpl"&
&bean id="bookService" parent="baseWebService"&
&property name="serviceBean" ref="bookWS" /&
&property name="serviceClass" value="com.xiaoji.webservice.xfire.service.BookService" /&
(三)剩下的就是自定义接口和实现类,对象bean.代码如下
package com.xiaoji.webservice.xfire.
public class Book {
private int bookId;
public Book(){
public Book(int bookId,String name){
this.bookId = bookId;
this.name =
public int getBookId() {
return bookId;
public void setBookId(int bookId) {
this.bookId = bookId;
public String getName() {
public void setName(String name) {
this.name =
BookService和BookServiceimpl,定义了2个方法,一个传入字符串并返回字符串,另外一个传入个数字返回个对象:
package com.xiaoji.webservice.xfire.
import com.xiaoji.webservice.xfire.entity.B
public interface BookService {
public Book getBookById(int id);
public String sayHello(String str);
package com.xiaoji.webservice.xfire.service.
import java.util.ArrayL
import java.util.L
import com.xiaoji.webservice.xfire.entity.B
import com.xiaoji.webservice.xfire.service.BookS
public class BookServiceImpl implements BookService {
public Book getBookById(int id) {
Book book = new Book(1,"china");
public String sayHello(String str) {
// TODO Auto-generated method stub
return "this is " + str + ".";
最后还是要贴上pom.xml源码
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.xiaoji.webservice&/groupId&
&artifactId&webservice-xfire&/artifactId&
&packaging&war&/packaging&
&version&0.0.1-SNAPSHOT&/version&
&name&webservice-xfire Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&dependencies&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&3.8.1&/version&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.codehaus.xfire&/groupId&
&artifactId&xfire-core&/artifactId&
&version&1.2.5&/version&
&/dependency&
&dependency&
&groupId&org.codehaus.xfire&/groupId&
&artifactId&xfire-spring&/artifactId&
&version&1.2.6&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&3.2.8.RELEASE&/version&
&/dependency&
&/dependencies&
&finalName&webservice-xfire&/finalName&
&/project&
服务器注解:服务器配置基本这样,有一点不理解的地方就是不能返回List,map等集合对象。如果有人实现可以互相交流哈。
启动jetty,访问127.0.0.1:8080/webservice-xfire/service/BookService?wsdl。
2用xfire的eclipse插件生成客户端访问方式。
如果你eclipse上没有xfire插件,请参考我的博客:,进行xfire插件安装,
新建个maven-archetype-webapp,右键新建的项目,选择new-》other-》Code generation from WSDL document,wsdl url or path为:127.0.0.1:8080/webservice-xfire/service/BookService?wsdl;output directory选择新建项目下的src/java/最后输入package(随便输);确定即可。
你会发现包里面多了个xfire组包 可以删掉,新建个客户端类,代码如下:
package com.xiaoji.webservice.xfire.
import java.net.MalformedURLE
public class WebserviceXfireClient {
public static void main(String[] args) throws Exception {
//xfire客户端访问webservice第3种方式
//xfire自动生成客户端
BookServiceClient client = new BookServiceClient();
BookServicePortType bs = client.getBookServiceHttpPort();
System.out.println(bs.sayHello("小吉"));
System.out.println(bs.getBookById(0).getName().getValue());
最后贴上xfire的pom.xml:
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.xiaoji.webservice.xfire&/groupId&
&artifactId&eclipseplugin&/artifactId&
&packaging&war&/packaging&
&version&0.0.1-SNAPSHOT&/version&
&name&eclipseplugin Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&dependencies&
&dependency&
&groupId&org.codehaus.xfire&/groupId&
&artifactId&xfire-all&/artifactId&
&version&1.2.6&/version&
&/dependency&
&/dependencies&
&finalName&eclipseplugin&/finalName&
&/project&
3:第二种访问方式是知道接口的自定义对象bean时用,这里要注意,必须类名和包名一直,要不访问不到的。
这里只贴客户端代码。pom.xml,类和接口如上,
// 第一种访问方式需要知道接口和bean
public static void testClient1() throws MalformedURLException {
String serviceUrl = "http://172.16.141.55:8080/webservice-xfire/service/BookService";
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
Service service = new ObjectServiceFactory().create(BookService.class);
BookService bs = (BookService) factory.create(service, serviceUrl);
System.out.println(bs.sayHello("小吉111111"));
System.out.println(bs.getBookById(0).getName());
4:第4中客户端动态访问,这里我刚刚开始的时候始终不能返回自定义对象,返回的类型为DocumentImpl,我就想办法解析这个类型查找类型相关资料,终于解析成功,这里共享给大家:
// 动态客户端第2种访问方式
public static void testClient2() throws MalformedURLException, Exception {
Client client = new Client(
"http://172.16.141.55:8080/webservice-xfire/service/BookService?wsdl"));
Object[] results = client.invoke("sayHello", new Object[] { "吉凌夷" });
Object[] results2 = client.invoke("getBookById", new Object[] { 1 });
System.out.println(results[0]);
//返回对象解析
Document xmlTree = (Document)results2[0];
Element root = xmlTree.getDocumentElement();
parseElement(root);
System.out.println(map.get("bookId")+"-&"+map.get("name"));
* 解析返回树
* @param root
private static void parseElement(Element root) {
String key = root.getNodeName();
NodeList list = root.getChildNodes();
for (int i = 0; i & list.getLength(); i++) {
Node node = list.item(i);
if (node instanceof Element) {
Element e = (Element)
parseElement(e);
} else if (node instanceof Text) {
Text t = (Text)
map.put(key, t.getNodeValue());
注:pom.xml和第2中是一样的,这里要说一下xfire,官网很久没更新,官网上说的是和cxf合并了,具体咋样大家有待考证。
剩下的就是axis2,也是资料最多的。如果不是很忙的话我会很快更新出来。
下面我会上传源码:其中一个是服务器,2个是客户端,第2中访问和第3中访问我放在一起,请自行分别。
下载次数: 184
下载次数: 96
下载次数: 109
jishiweili
浏览: 175180 次
来自: 成都
引用[b][b][b]TTTTTTTTTTT[/b][/b][ ...
楼主写的很清晰,这种开发模式如果熟悉的话可以快速的开发应用系统 ...
JPA的实现hibernate唯一恶心的就是设置数据库众多关系 ...鍩轰簬wsdl鏂囦欢鐢▁fire鐢熸垚webservice瀹㈡埛绔

我要回帖

更多关于 xfire 对象参数 的文章

 

随机推荐