- 浏览: 2552857 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
http://xfire.codehaus.org/
xfire的下载站点。下载了xfire,结合本机上的spring配置文件,做如下配置:
在spring的配置文件applicationContext-webservice.xml中增加如下配置:
<!-- xfire webservice -->
<!-- xfire默认配置文件,存在jar包中 -->
<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>
<!-- webService的接口类 -->
<bean name="IUserManager" parent="baseWebService">
<property name="serviceBean" ref="xfireUserService"/>
<property name="serviceClass" value="com.sillycat.core.webservice.IUserManager"/>
</bean>
<!-- webService的包装实现类 -->
<bean name="xfireUserService" class="com.sillycat.core.webservice.impl.XfireUserService" />
在WebRoot/WEB-INF/web.xml中增加如下配置:
<!-- xfire webservice -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
接口和以前的axis的接口一致,嘿嘿。我这次配置的还是axis和xfire可以混用的,不过一般项目中怎么可能两个混用呢。只是学习的时候用用吧。
IUserManager.java :
package com.sillycat.core.webservice;
import java.util.List;
import com.sillycat.core.webservice.model.IUser;
public interface IUserManager {
public List<IUser> getAllUser();
public IUser getUser(Integer id);
public void saveUser(IUser user);
public void removeUser(Integer id);
}
XfireUserService实现类,XfireUserService.java:
package com.sillycat.core.webservice.impl;
import java.util.List;
import com.sillycat.core.model.User;
import com.sillycat.core.service.UserManager;
import com.sillycat.core.webservice.IUserManager;
import com.sillycat.core.webservice.model.IUser;
import com.sillycat.core.webservice.transformer.UserTransformer;
public class XfireUserService implements IUserManager {
private UserManager userManager;
public List<IUser> getAllUser() {
return userManager.getAllUser();
}
public IUser getUser(Integer id) {
User u = userManager.getUser(id);
IUser i = UserTransformer.transformUser2IUser(u);
return i;
}
public void removeUser(Integer id) {
userManager.removeUser(id);
}
public void saveUser(IUser user) {
//TODO
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
}
这样server端就配置好了。如果访问这个地址能访问到WSDL文件,就成功了:
http://www.sillycat.com/easyLife/services/IUserManager?wsdl
http://www.sillycat.com/easyLife 是地址
services/IUserManager?wsdl 是提供出来的接口名字
客户端调用用myeclipse可以生成,用springside上提供的client的方式用也可以,不过都觉得不爽。稍微修改了一下,参考axis的客户端调用
首先写了一个调用的工具类XFireClientFactory.java,把calvin的类改了改,继承自FactoryBean接口:
package com.sillycat.plugin.webservice.xfire;
import java.net.MalformedURLException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.xfire.annotations.AnnotationServiceFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.util.Assert;
/**
* XFire Client 工厂�?. <p/>
* <p>
* 封装了XFire有点奇�?�的根据Web服务接口类和Service URL 生成客户端Proxy类的代码. 同时使用泛型,减少了返回时的强制类型转�?.
* </p>
*
* @author calvin
*/
@SuppressWarnings("unchecked")
public class XFireClientFactory implements FactoryBean {
private static XFireProxyFactory serviceFactory = new XFireProxyFactory();
private static final Log log = LogFactory.getLog(XFireClientFactory.class);
private String serviceURL;
private String serviceClassName;
private XFireClientFactory() {
}
public Object getObject() throws Exception {
String url = this.getServiceURL();
Class sClass = null;
try {
sClass = Class.forName(this.getServiceClassName());
} catch (ClassNotFoundException e) {
log.error(e.getMessage(), e);
return null;
}
Assert.notNull(url);
Assert.notNull(sClass);
Service serviceModel = new ObjectServiceFactory().create(sClass);
try {
return serviceFactory.create(serviceModel, url);
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
return null;
}
}
public Class getObjectType() {
Class sClass = null;
try {
sClass = Class.forName(this.getServiceClassName());
} catch (ClassNotFoundException e) {
log.error(e.getMessage(), e);
return null;
}
return sClass;
}
public boolean isSingleton() {
return true;
}
/**
* 获得POJO形式的Web服务的客户端Proxy�?.
*
* @param serviceURL
* Web ServiceURL
* @param serviceClass
* Web Service接口�?
* @return 类型为Web Service接口的客户端Proxy�?
*/
public static <T> T getClient(String serviceURL, Class<T> serviceClass) {
Assert.notNull(serviceURL);
Assert.notNull(serviceClass);
Service serviceModel = new ObjectServiceFactory().create(serviceClass);
try {
return (T) serviceFactory.create(serviceModel, serviceURL);
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
return null;
}
}
/**
* 获得JSR181形式定义的Web服务的客户端Proxy�?. 注意和普通的生成客户端方法不�?,�?要多�?个implClass参数.
*
* @param serviceURL
* Web ServiceURL.
* @param serviceClass
* Web Service接口�?.
* @param implClass
* Web Service街口的服务端实现�?.
* @return 类型为Web Service接口的客户端Proxy�?.
*/
public static <T> T getJSR181Client(String serviceURL,
Class<T> serviceClass, Class implClass) {
Assert.notNull(serviceURL);
Assert.notNull(serviceClass);
Service serviceModel = new AnnotationServiceFactory().create(implClass);
try {
return (T) serviceFactory.create(serviceModel, serviceURL);
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
return null;
}
}
public String getServiceURL() {
return serviceURL;
}
public void setServiceURL(String serviceURL) {
this.serviceURL = serviceURL;
}
public String getServiceClassName() {
return serviceClassName;
}
public void setServiceClassName(String serviceClassName) {
this.serviceClassName = serviceClassName;
}
}
上面这个客户端调用接口类,其实一般都是不变了。每次新增一个调用就新增一个spring的配置就可以了,还是在
applicationContext-webservice.xml这个配置里面增加如下几行:
<bean name="userManagerXfire"
class="com.sillycat.plugin.webservice.xfire.XFireClientFactory">
<property name="serviceURL" value="http://www.sillycat.com/easyLife/services/IUserManager"/>
<property name="serviceClassName" value="com.sillycat.core.webservice.IUserManager"/>
</bean>
serviceURL是提供webservice的地址
serviceClassName是webservice这个类的接口。呵呵。这种方法调用默认要把接口类打包到调用webservice那边去哈。
接口发布给别人不算泄密吧。
xfire的下载站点。下载了xfire,结合本机上的spring配置文件,做如下配置:
在spring的配置文件applicationContext-webservice.xml中增加如下配置:
<!-- xfire webservice -->
<!-- xfire默认配置文件,存在jar包中 -->
<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>
<!-- webService的接口类 -->
<bean name="IUserManager" parent="baseWebService">
<property name="serviceBean" ref="xfireUserService"/>
<property name="serviceClass" value="com.sillycat.core.webservice.IUserManager"/>
</bean>
<!-- webService的包装实现类 -->
<bean name="xfireUserService" class="com.sillycat.core.webservice.impl.XfireUserService" />
在WebRoot/WEB-INF/web.xml中增加如下配置:
<!-- xfire webservice -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
接口和以前的axis的接口一致,嘿嘿。我这次配置的还是axis和xfire可以混用的,不过一般项目中怎么可能两个混用呢。只是学习的时候用用吧。
IUserManager.java :
package com.sillycat.core.webservice;
import java.util.List;
import com.sillycat.core.webservice.model.IUser;
public interface IUserManager {
public List<IUser> getAllUser();
public IUser getUser(Integer id);
public void saveUser(IUser user);
public void removeUser(Integer id);
}
XfireUserService实现类,XfireUserService.java:
package com.sillycat.core.webservice.impl;
import java.util.List;
import com.sillycat.core.model.User;
import com.sillycat.core.service.UserManager;
import com.sillycat.core.webservice.IUserManager;
import com.sillycat.core.webservice.model.IUser;
import com.sillycat.core.webservice.transformer.UserTransformer;
public class XfireUserService implements IUserManager {
private UserManager userManager;
public List<IUser> getAllUser() {
return userManager.getAllUser();
}
public IUser getUser(Integer id) {
User u = userManager.getUser(id);
IUser i = UserTransformer.transformUser2IUser(u);
return i;
}
public void removeUser(Integer id) {
userManager.removeUser(id);
}
public void saveUser(IUser user) {
//TODO
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
}
这样server端就配置好了。如果访问这个地址能访问到WSDL文件,就成功了:
http://www.sillycat.com/easyLife/services/IUserManager?wsdl
http://www.sillycat.com/easyLife 是地址
services/IUserManager?wsdl 是提供出来的接口名字
客户端调用用myeclipse可以生成,用springside上提供的client的方式用也可以,不过都觉得不爽。稍微修改了一下,参考axis的客户端调用
首先写了一个调用的工具类XFireClientFactory.java,把calvin的类改了改,继承自FactoryBean接口:
package com.sillycat.plugin.webservice.xfire;
import java.net.MalformedURLException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.xfire.annotations.AnnotationServiceFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.util.Assert;
/**
* XFire Client 工厂�?. <p/>
* <p>
* 封装了XFire有点奇�?�的根据Web服务接口类和Service URL 生成客户端Proxy类的代码. 同时使用泛型,减少了返回时的强制类型转�?.
* </p>
*
* @author calvin
*/
@SuppressWarnings("unchecked")
public class XFireClientFactory implements FactoryBean {
private static XFireProxyFactory serviceFactory = new XFireProxyFactory();
private static final Log log = LogFactory.getLog(XFireClientFactory.class);
private String serviceURL;
private String serviceClassName;
private XFireClientFactory() {
}
public Object getObject() throws Exception {
String url = this.getServiceURL();
Class sClass = null;
try {
sClass = Class.forName(this.getServiceClassName());
} catch (ClassNotFoundException e) {
log.error(e.getMessage(), e);
return null;
}
Assert.notNull(url);
Assert.notNull(sClass);
Service serviceModel = new ObjectServiceFactory().create(sClass);
try {
return serviceFactory.create(serviceModel, url);
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
return null;
}
}
public Class getObjectType() {
Class sClass = null;
try {
sClass = Class.forName(this.getServiceClassName());
} catch (ClassNotFoundException e) {
log.error(e.getMessage(), e);
return null;
}
return sClass;
}
public boolean isSingleton() {
return true;
}
/**
* 获得POJO形式的Web服务的客户端Proxy�?.
*
* @param serviceURL
* Web ServiceURL
* @param serviceClass
* Web Service接口�?
* @return 类型为Web Service接口的客户端Proxy�?
*/
public static <T> T getClient(String serviceURL, Class<T> serviceClass) {
Assert.notNull(serviceURL);
Assert.notNull(serviceClass);
Service serviceModel = new ObjectServiceFactory().create(serviceClass);
try {
return (T) serviceFactory.create(serviceModel, serviceURL);
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
return null;
}
}
/**
* 获得JSR181形式定义的Web服务的客户端Proxy�?. 注意和普通的生成客户端方法不�?,�?要多�?个implClass参数.
*
* @param serviceURL
* Web ServiceURL.
* @param serviceClass
* Web Service接口�?.
* @param implClass
* Web Service街口的服务端实现�?.
* @return 类型为Web Service接口的客户端Proxy�?.
*/
public static <T> T getJSR181Client(String serviceURL,
Class<T> serviceClass, Class implClass) {
Assert.notNull(serviceURL);
Assert.notNull(serviceClass);
Service serviceModel = new AnnotationServiceFactory().create(implClass);
try {
return (T) serviceFactory.create(serviceModel, serviceURL);
} catch (MalformedURLException e) {
log.error(e.getMessage(), e);
return null;
}
}
public String getServiceURL() {
return serviceURL;
}
public void setServiceURL(String serviceURL) {
this.serviceURL = serviceURL;
}
public String getServiceClassName() {
return serviceClassName;
}
public void setServiceClassName(String serviceClassName) {
this.serviceClassName = serviceClassName;
}
}
上面这个客户端调用接口类,其实一般都是不变了。每次新增一个调用就新增一个spring的配置就可以了,还是在
applicationContext-webservice.xml这个配置里面增加如下几行:
<bean name="userManagerXfire"
class="com.sillycat.plugin.webservice.xfire.XFireClientFactory">
<property name="serviceURL" value="http://www.sillycat.com/easyLife/services/IUserManager"/>
<property name="serviceClassName" value="com.sillycat.core.webservice.IUserManager"/>
</bean>
serviceURL是提供webservice的地址
serviceClassName是webservice这个类的接口。呵呵。这种方法调用默认要把接口类打包到调用webservice那边去哈。
接口发布给别人不算泄密吧。
发表评论
-
SOAP AXIS2 with HTTPS
2011-11-24 15:28 4249SOAP AXIS2 with HTTPS 1. sampl ... -
xfire后续问题补充
2010-01-06 14:34 2633xfire后续问题补充 问题一:xfire的方法中,需要知道 ... -
AXIS实现WebService
2010-01-06 11:51 3960AXIS实现WebService webservice里面对 ... -
xfire的webservice安全机制之签名
2010-01-05 23:31 1381xfire的webservice安全机制之签名 服务端配置修 ... -
xfire的webservice安全机制之签名
2010-01-05 23:29 1615xfire的webservice安全机制之签名 服务端配置修 ... -
xfire的webservice安全机制之用户校验
2010-01-05 23:29 2112xfire的webservice安全机制之用户校验 xfir ... -
xfire的webservice安全机制之加密(三)
2010-01-05 23:29 1274如何用KEYTOOL工具生成私匙和公匙 1、通过别名和密码创 ... -
xfire的webservice安全机制之加密(二)
2010-01-05 23:28 2817xfire的webservice安全机制 下面是客户端调用的 ... -
xfire的webservice安全机制之加密(一)
2010-01-05 23:28 2893xfire的webservice安全机制 在原来使用xfir ... -
Xfire在Weblogic10.3上发布的问题
2010-01-05 10:37 6325Xfire在Weblogic10.3上发布的问题 最近项目的 ... -
mule2.2.x架构(八)部署到WEB项目
2010-01-05 10:36 1967mule2.2.x架构(八)部署到WEB项目 所有的示例文档 ... -
xfire的Client的WSDL调用
2010-01-05 10:36 3158xfire的Client的WSDL调用 也只是想测试一下,如 ... -
mule2.2.x架构(七)示例学习LoanBroker
2010-01-05 10:36 1710mule2.2.x架构(七)示例学习LoanBroker 所 ... -
xfire的client的JAVA调用方式
2010-01-05 10:35 3554xfire的client的JAVA调用方式 平时我们调用xf ... -
mule2.2.x架构(六)示例学习scripting
2010-01-05 10:35 1475mule2.2.x架构(六)示例学习scripting 所有 ... -
mule2.2.x架构(五)示例学习errorHandle
2010-01-05 10:34 1680mule2.2.x架构(五)示例学习errorHandle ... -
mule2.2.x架构(四)示例学习StockQuote
2010-01-05 10:34 1873mule2.2.x架构(四)示例学习StockQuote 所 ... -
mule2.2.x架构(三)示例学习hello
2010-01-05 10:34 1876mule2.2.x架构(三)示例学习hello 所有的示例文 ... -
mule2.2.x架构(二)示例学习echo
2010-01-05 10:33 1776mule2.2.x架构(二)示例学习echo 所有的示例文档 ... -
mule2.2.x架构(一)环境搭建
2010-01-05 10:31 2280mule2.2.x架构(一)环境搭建 MULE首页 http ...
相关推荐
【标题】:“Web服务与Spring整合——XFire实战” 【描述】:这篇博客文章通过一个实际的案例,探讨了如何将Web服务与Spring框架相结合,使用XFire进行开发。XFire是Spring框架早期用于实现Web服务的一个库,它提供...
Spring 和 XFire 是一个经典的组合,用于在Java应用程序中创建和消费Web服务。Spring作为一个强大的框架,提供了全面的依赖注入和面向切面编程能力,而XFire是早先的Web服务实现,它允许开发者轻松地将Java接口转换...
【标题】中的“webservice xfire整合spring(webservice配置采用注解)”是指将Xfire,一个早期的Web服务框架,与Spring框架结合使用,其中Web服务的配置通过Spring的注解方式进行。这种方式简化了配置,提高了开发...
标题 "spring webService hibernate结合xfire" 描述了一个整合技术的应用,即Spring、Web服务(WebService)和Hibernate框架与Xfire的结合。在这个项目中,开发者可能想要创建一个基于Java的Web服务,该服务能够利用...
在“WebService之XFire开发文档和代码”压缩包中,包含了详细的开发文档,帮助开发者了解如何使用XFire创建、部署和测试WebService。同时,还提供了一些代码示例,可以帮助开发者快速上手实践。通过学习这些文档和...
标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...
在Web服务领域,Spring提供了对Web服务的支持,可以与XFire无缝集成,允许开发者在Spring环境下创建、配置和管理Web服务。 结合XFire和Spring,有以下两种主要的方式来开发Web服务: 1. **基于注解的方式**:...
在这种情况下,Spring会自动扫描并注册带有`@WebService`注解的服务,无需额外的XML配置。只需确保你的Spring配置启用了组件扫描,并且包含了适当的命名空间和注解处理器。 在实际应用中,这两种方式都有其适用场景...
标题“使用xfire+spring构建webservice”指出的是一个关于如何利用XFire和Spring框架创建Web服务的教程。XFire是早先的一个用于构建Web服务的开源Java库,它简化了SOAP(简单对象访问协议)服务的开发。而Spring框架...
**Spring XFire 实现Web服务** 在Java世界中,Spring框架以其灵活性和强大的功能成为企业级应用开发的首选。而XFire(后被Apache CXF所吸收)则是一款高效的Web服务实现工具,它允许开发者轻松地创建和消费SOAP Web...
**XFire整合Spring WebService详解** XFire是一个Java Web服务框架,它允许开发者轻松地创建和部署Web服务。Spring框架则是Java开发中的一个核心组件,主要用于处理依赖注入、AOP(面向切面编程)以及应用上下文...
【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...
在这个“webservice xfire spring2.0完整实例”中,我们将会探讨如何结合XFire 1.2.6和Spring 2.0来创建和消费Web服务。首先,我们需要理解Spring 2.0中的Web服务抽象层,即Spring Web Services模块。这个模块提供了...
例如,使用`@WebService`注解可以在不编写XML配置的情况下声明服务。 ```java @WebService public class HelloWorldImpl implements HelloWorld { // ... } ``` 五、XFire与其他技术的集成 XFire可以很好地与...
将XFire与Spring集成,可以方便地在Spring应用中创建和消费Web服务。 **Web服务基础** Web服务基于开放标准,如SOAP(简单对象访问协议)和WSDL(Web服务描述语言),使得服务提供者可以通过HTTP协议暴露功能,服务...
spring集成xfire webservice实现远程调用 将项目发布后,点击http://localhost:8080/SpringWebServiceTest/services/HelloWS?wsdl即可 其中也有客户端的调用,自己试试吧。
标题中的“xfire+spring+maven构建webservice服务器和客户端”揭示了本教程将围绕三个主要技术进行讨论:XFire、Spring和Maven。这三者都是Java开发中不可或缺的工具,尤其在构建Web服务方面。 XFire是早期的一个...
Spring+xFire 实现 WebService 是一种在 Java 开发中创建和使用 Web 服务的方式,它结合了 Spring 框架的灵活性和 xFire(现在称为 Apache CXF)的 Web 服务功能。以下是对这个技术栈的详细说明: 1. **环境配置**...
在本主题中,我们将深入探讨如何将XFire与Spring2框架集成,以便构建高效、灵活的Web服务解决方案。 XFire是Apache CXF项目的前身,它是一个轻量级的Java Web服务实现,提供了快速开发和部署Web服务的能力。XFire...
Xfire Spring Hibernate 发布WebService(源码) Xfire1.2 Spring 2.0 Hibernate 3 发布WebService 一、准备工作 1、下载安装MyEclipse6.5 2、下载安装MySQL Server 5.1 3、下载MySQL驱动 mysql-connector-java...