Xfire简介
XFire是新一代的Java WebService引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring集成,它使得Java开发人员终于可以获得和.Net开发人员一样的开发效率。
XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。
XFire 支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor;
支持基于HTTP、JMS、XMPP等多种协议访问Web服务;
支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等;
支持JSR181,可以通过JDK5配置Web服务;
高性能的SOAP实现;
服务器端、客户端代码辅助生成;
对Spring、Pico、Plexus等项目的支持等。
XFire是一种基于Servlet技术的SOA应用开发框架,需要Servlet容器的支持。XFire支持在多种Servlet容器中运行,包括Websphere、Weblogic、TOMCAT等。支持JDK 1.4以上(含1.4).
XFire框架目前的最新版本是1.2.6,可以访问http://xfire.codehaus.org 下载XFire框架的安装包,下载时请选择“全部二进制发布包”,而不仅仅是“XFirejar文件".下载地址:http://xfire.codehaus.org/Download
Xfire已经不更新了,所以目前Spring4.0及以上已经不支持Xfire,如果需要和Spring集成,就用Spring3.2.x吧,当然也可以选择CXF(Xfire的下一代),新入职一家公司用的是Xfire,就简单看了一下。
快速发布WebService接口
1.Idea新建一个Spring + Web项目
2.将下载的Xfire包导入项目
3.确保jar包在发布的war包根目录的lib目录下
4.编写暴露方法的接口和实现类,如图示,具体代码就不粘贴了,就是写一个简答接口和实现类就行
5.修改web.xml文件,目的是注册servlet, 发布暴露WSDL
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>xfireSpringServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfireSpringServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
6.修改spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<import resource="classpath*:org/codehaus/xfire/spring/xfire.xml"/>
<bean id="BookService" class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceFactory" ref="xfire.serviceFactory"></property>
<property name="xfire" ref="xfire"></property>
<property name="serviceBean" ref="BookServiceImpl"></property>
<property name="serviceClass" value="com.jett.service.BookService"></property>
<property name="name" value="BookService"></property>
</bean>
<bean id="BookServiceImpl" class="com.jett.service.impl.BookServiceImpl"></bean>
<bean id="FoodService" class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceFactory" ref="xfire.serviceFactory"></property>
<property name="xfire" ref="xfire"/>
<property name="serviceBean" ref="FoodServiceImpl"/>
<property name="serviceClass" value="com.jett.service.FoodService"/>
<property name="name" value="FoodService"/>
</bean>
<bean id="FoodServiceImpl" class="com.jett.service.impl.FoodServiceImpl"></bean>
</beans>
7. 启动TOMCAT,
访问地址: http://localhost:8080/应用根/service 查看wsdl
如果能查看到wsdl,服务端就OK了
如果项目在添加Maven框架,就不需要自己下载jar包,只需要添加如下依赖就好了
<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>
当然最后需要保证自动下载的jar要打包发布到war中,不然在tomcat上找不到相应的jar包
客户端访问
客户端可以有多种方式访问,比如下载生成客户端啊,我这边就介绍客户端动态访问的方式
客户端也需要Xfire的jar,可以自己导入或者maven导入,这里给出访问代码
import org.codehaus.xfire.client.Client;
import java.net.URL;
/**
* @Author: Jett
* @Date: 2019/4/4 10:10
* Desciption:
*/
public class FoodTest {
public static void main(String[] args) throws Exception {
Client client = new Client(new URL("http://localhost:8080/xfireTest/services/FoodService?wsdl"));
Object[] objects = client.invoke("food", new Object[]{"apple", 2});
System.out.println(objects[0]);
}
}
这样一个简单的demo就实现了,深入的关于传参,传对象的就大家自己深入挖掘吧