xfire发布webservice
2008-10-10 10:53
281 查看
第一步:编写xfire的服务器端
首先需要xfire的jar文件,可以到官方网站下载 ,同时根据自己项目的需要下载oracle的jar文件,springjar文件和struts的jar文件。
你可以直接访问这个地址下载:http://eft21.download.csdn.net/
然后编写web.xml文件在里面配置xfire,spring等
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>doms application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/com/stt/apps/doms/application_context.xml,
/WEB-INF/classes/pms/Application*.xml,/WEB-INF/classes/xfire.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- export exportfile service by xfire -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/extenal/*</url-pattern>
</servlet-mapping>
<!-- xfire end -->
</web-app>
在src目录下放入xfire的配置文件
customEditors.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="customEditorConfigurer"
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="org.codehaus.xfire.service.ServiceFactory">
<bean class="org.codehaus.xfire.spring.editors.ServiceFactoryEditor">
<property name="transportManager" ref="xfire.transportManager" />
</bean>
</entry>
</map>
</property>
</bean>
</beans>
xfire.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="customEditors.xml"/>
<bean id="xfire.serviceRegistry"
class="org.codehaus.xfire.service.DefaultServiceRegistry"
singleton="true" />
<bean id="xfire.transportManager"
class="org.codehaus.xfire.transport.DefaultTransportManager"
singleton="true" init-method="initialize" destroy-method="dispose">
</bean>
<bean id="xfire" class="org.codehaus.xfire.DefaultXFire"
singleton="true">
<constructor-arg index="0">
<ref bean="xfire.serviceRegistry" />
</constructor-arg>
<constructor-arg index="1">
<ref bean="xfire.transportManager" />
</constructor-arg>
</bean>
<bean id="xfire.typeMappingRegistry"
class="org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry"
init-method="createDefaultMappings" singleton="true">
</bean>
<bean id="xfire.aegisBindingProvider"
class="org.codehaus.xfire.aegis.AegisBindingProvider"
singleton="true">
<constructor-arg index="0">
<ref bean="xfire.typeMappingRegistry" />
</constructor-arg>
</bean>
<bean id="xfire.serviceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory"
singleton="true">
<constructor-arg index="0">
<ref bean="xfire.transportManager" />
</constructor-arg>
<constructor-arg index="1">
<ref bean="xfire.aegisBindingProvider" />
</constructor-arg>
</bean>
<bean id="xfire.servletController"
class="org.codehaus.xfire.transport.http.XFireServletController"
singleton="true">
<constructor-arg>
<ref bean="xfire" />
</constructor-arg>
</bean>
<bean id="xfire.messageServiceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory">
<constructor-arg index="0" ref="xfire.transportManager" />
<constructor-arg index="1" ref="xfire.messageBindingProvider" />
<property name="style" value="message" />
</bean>
<bean id="xfire.messageBindingProvider"
class="org.codehaus.xfire.service.binding.MessageBindingProvider" />
<!--
<bean id="commons-attributes"
class="org.codehaus.xfire.spring.config.ServiceFactoryBean">
<constructor-arg index="0" value="commons-attributes" />
</bean>
<bean id="jsr181"
class="org.codehaus.xfire.spring.config.ServiceFactoryBean"
init-method="initialize">
<constructor-arg index="0" value="jsr181" />
</bean>
-->
</beans>
和xfireXmlBeans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="xfire.xmlbeansServiceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory"
singleton="true">
<constructor-arg index="0" ref="xfire.transportManager" />
<constructor-arg index="1" ref="xfire.xmlbeansBindingProvider" />
<property name="wsdlBuilderFactory" ref="xfire.xmlbeansWSDLBuilderFactory"/>
</bean>
<bean id="xfire.xmlbeansBindingProvider"
class="org.codehaus.xfire.aegis.AegisBindingProvider"
singleton="true">
<constructor-arg index="0" ref="xfire.xmlbeansTypeRegistry" />
</bean>
<bean id="xfire.xmlbeansTypeRegistry"
class="org.codehaus.xfire.xmlbeans.XmlBeansTypeRegistry"
singleton="true"/>
<bean id="xfire.xmlbeansWSDLBuilderFactory"
class="org.codehaus.xfire.xmlbeans.XmlBeansWSDLBuilderFactory"/>
</beans>
并且在在src目录中建立META-INF目录并建立xfire目录加入services.xml文件里面配置要发布的服务的类名
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>exportFileService</name>
<serviceClass>
com.stt.apps.doms.service.extenal.ExportFileService
</serviceClass>
<implementationClass>
com.stt.apps.doms.service.extenal.impl.ExportFileServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service></beans>
然后再WEB-INF目录中加入xfireXmlBeans.xml文件配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="xfire.xmlbeansServiceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory"
singleton="true">
<constructor-arg index="0" ref="xfire.transportManager" />
<constructor-arg index="1" ref="xfire.xmlbeansBindingProvider" />
<property name="wsdlBuilderFactory" ref="xfire.xmlbeansWSDLBuilderFactory"/>
</bean>
<bean id="xfire.xmlbeansBindingProvider"
class="org.codehaus.xfire.aegis.AegisBindingProvider"
singleton="true">
<constructor-arg index="0" ref="xfire.xmlbeansTypeRegistry" />
</bean>
<bean id="xfire.xmlbeansTypeRegistry"
class="org.codehaus.xfire.xmlbeans.XmlBeansTypeRegistry"
singleton="true"/>
<bean id="xfire.xmlbeansWSDLBuilderFactory"
class="org.codehaus.xfire.xmlbeans.XmlBeansWSDLBuilderFactory"/>
</beans>
到现在为止所有的配置文件已经完成,接着我们该写对应的业务逻辑(ExportFileService)和数据逻辑(ExportFileDao)等
并配置spring的配置文件等
第二步:客户端的编写
客户端就相对简单些了,我们可以用axis技术实现
axis的客户端jar文件可以到官方网站下载
你可以直接访问这个地址下载:http://eft21.download.csdn.net/
建立两个批处理文件
1,cp.bat
内容:
set cp=%cp%;%1
2,wsdl2java.bat
内容:
set cp=
for %%1 in (E:/client/*.jar) do call cp.bat %%1
java -cp %cp% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/wsdexfire/exportService?wsdl
pause
运行一下wsdl2java.bat文件可以得到客户端文件
我们可以编写简单的测试文件来调用服务 test.java:
package test;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import org.apache.axis.AxisFault;
import com.web.service.ExportServiceHttpBindingStub;
public class Test {
public static void main(String[] args) {
URL u;
try {
u = new URL("http://localhost:8080/wsdexfire/exportService");
ExportServiceHttpBindingStub ins = new ExportServiceHttpBindingStub(u,null);
System.out.println(ins.getLoginName(71));
} catch (AxisFault e) {
e.printStackTrace();
}catch (MalformedURLException e1) {
e1.printStackTrace();
}catch (RemoteException e) {
e.printStackTrace();
}
}
}
完成!
首先需要xfire的jar文件,可以到官方网站下载 ,同时根据自己项目的需要下载oracle的jar文件,springjar文件和struts的jar文件。
你可以直接访问这个地址下载:http://eft21.download.csdn.net/
然后编写web.xml文件在里面配置xfire,spring等
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>doms application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/com/stt/apps/doms/application_context.xml,
/WEB-INF/classes/pms/Application*.xml,/WEB-INF/classes/xfire.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- export exportfile service by xfire -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/extenal/*</url-pattern>
</servlet-mapping>
<!-- xfire end -->
</web-app>
在src目录下放入xfire的配置文件
customEditors.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="customEditorConfigurer"
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="org.codehaus.xfire.service.ServiceFactory">
<bean class="org.codehaus.xfire.spring.editors.ServiceFactoryEditor">
<property name="transportManager" ref="xfire.transportManager" />
</bean>
</entry>
</map>
</property>
</bean>
</beans>
xfire.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="customEditors.xml"/>
<bean id="xfire.serviceRegistry"
class="org.codehaus.xfire.service.DefaultServiceRegistry"
singleton="true" />
<bean id="xfire.transportManager"
class="org.codehaus.xfire.transport.DefaultTransportManager"
singleton="true" init-method="initialize" destroy-method="dispose">
</bean>
<bean id="xfire" class="org.codehaus.xfire.DefaultXFire"
singleton="true">
<constructor-arg index="0">
<ref bean="xfire.serviceRegistry" />
</constructor-arg>
<constructor-arg index="1">
<ref bean="xfire.transportManager" />
</constructor-arg>
</bean>
<bean id="xfire.typeMappingRegistry"
class="org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry"
init-method="createDefaultMappings" singleton="true">
</bean>
<bean id="xfire.aegisBindingProvider"
class="org.codehaus.xfire.aegis.AegisBindingProvider"
singleton="true">
<constructor-arg index="0">
<ref bean="xfire.typeMappingRegistry" />
</constructor-arg>
</bean>
<bean id="xfire.serviceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory"
singleton="true">
<constructor-arg index="0">
<ref bean="xfire.transportManager" />
</constructor-arg>
<constructor-arg index="1">
<ref bean="xfire.aegisBindingProvider" />
</constructor-arg>
</bean>
<bean id="xfire.servletController"
class="org.codehaus.xfire.transport.http.XFireServletController"
singleton="true">
<constructor-arg>
<ref bean="xfire" />
</constructor-arg>
</bean>
<bean id="xfire.messageServiceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory">
<constructor-arg index="0" ref="xfire.transportManager" />
<constructor-arg index="1" ref="xfire.messageBindingProvider" />
<property name="style" value="message" />
</bean>
<bean id="xfire.messageBindingProvider"
class="org.codehaus.xfire.service.binding.MessageBindingProvider" />
<!--
<bean id="commons-attributes"
class="org.codehaus.xfire.spring.config.ServiceFactoryBean">
<constructor-arg index="0" value="commons-attributes" />
</bean>
<bean id="jsr181"
class="org.codehaus.xfire.spring.config.ServiceFactoryBean"
init-method="initialize">
<constructor-arg index="0" value="jsr181" />
</bean>
-->
</beans>
和xfireXmlBeans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="xfire.xmlbeansServiceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory"
singleton="true">
<constructor-arg index="0" ref="xfire.transportManager" />
<constructor-arg index="1" ref="xfire.xmlbeansBindingProvider" />
<property name="wsdlBuilderFactory" ref="xfire.xmlbeansWSDLBuilderFactory"/>
</bean>
<bean id="xfire.xmlbeansBindingProvider"
class="org.codehaus.xfire.aegis.AegisBindingProvider"
singleton="true">
<constructor-arg index="0" ref="xfire.xmlbeansTypeRegistry" />
</bean>
<bean id="xfire.xmlbeansTypeRegistry"
class="org.codehaus.xfire.xmlbeans.XmlBeansTypeRegistry"
singleton="true"/>
<bean id="xfire.xmlbeansWSDLBuilderFactory"
class="org.codehaus.xfire.xmlbeans.XmlBeansWSDLBuilderFactory"/>
</beans>
并且在在src目录中建立META-INF目录并建立xfire目录加入services.xml文件里面配置要发布的服务的类名
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>exportFileService</name>
<serviceClass>
com.stt.apps.doms.service.extenal.ExportFileService
</serviceClass>
<implementationClass>
com.stt.apps.doms.service.extenal.impl.ExportFileServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service></beans>
然后再WEB-INF目录中加入xfireXmlBeans.xml文件配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="xfire.xmlbeansServiceFactory"
class="org.codehaus.xfire.service.binding.ObjectServiceFactory"
singleton="true">
<constructor-arg index="0" ref="xfire.transportManager" />
<constructor-arg index="1" ref="xfire.xmlbeansBindingProvider" />
<property name="wsdlBuilderFactory" ref="xfire.xmlbeansWSDLBuilderFactory"/>
</bean>
<bean id="xfire.xmlbeansBindingProvider"
class="org.codehaus.xfire.aegis.AegisBindingProvider"
singleton="true">
<constructor-arg index="0" ref="xfire.xmlbeansTypeRegistry" />
</bean>
<bean id="xfire.xmlbeansTypeRegistry"
class="org.codehaus.xfire.xmlbeans.XmlBeansTypeRegistry"
singleton="true"/>
<bean id="xfire.xmlbeansWSDLBuilderFactory"
class="org.codehaus.xfire.xmlbeans.XmlBeansWSDLBuilderFactory"/>
</beans>
到现在为止所有的配置文件已经完成,接着我们该写对应的业务逻辑(ExportFileService)和数据逻辑(ExportFileDao)等
并配置spring的配置文件等
第二步:客户端的编写
客户端就相对简单些了,我们可以用axis技术实现
axis的客户端jar文件可以到官方网站下载
你可以直接访问这个地址下载:http://eft21.download.csdn.net/
建立两个批处理文件
1,cp.bat
内容:
set cp=%cp%;%1
2,wsdl2java.bat
内容:
set cp=
for %%1 in (E:/client/*.jar) do call cp.bat %%1
java -cp %cp% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/wsdexfire/exportService?wsdl
pause
运行一下wsdl2java.bat文件可以得到客户端文件
我们可以编写简单的测试文件来调用服务 test.java:
package test;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import org.apache.axis.AxisFault;
import com.web.service.ExportServiceHttpBindingStub;
public class Test {
public static void main(String[] args) {
URL u;
try {
u = new URL("http://localhost:8080/wsdexfire/exportService");
ExportServiceHttpBindingStub ins = new ExportServiceHttpBindingStub(u,null);
System.out.println(ins.getLoginName(71));
} catch (AxisFault e) {
e.printStackTrace();
}catch (MalformedURLException e1) {
e1.printStackTrace();
}catch (RemoteException e) {
e.printStackTrace();
}
}
}
完成!
相关文章推荐
- 利用xFire发布WebService
- xfire webService发布以及客户端调用(带验证头)
- 使用xfire快速发布WebService接口
- 使用session控制 XFire 发布的Webservice 并且由.net调用
- 使用Xfire发布WebService接口遇到的问题:
- 用xfire快速发布WebService接口
- 在与sap系统集成时遇到的问题.sap系统发布一webservice,java(xfire)作为客户端调用,调用时抛出如下异常: Wrong Content-Type and empty HTTP-Body received: ("HTTP Code 20
- spring+xfire发布webservice
- xfire发布的Webservice中Spring注入为空的解决方案
- (2)使用XFire方式发布WebService实例说明
- 使用xfire发布WebService
- 使用xfire快速发布WebService接口
- java里使用xfire发布webservice
- .net C# 调用 XFire发布的Webservice 安全访问控制
- xfire发布webservice
- .net调用java xfire发布的webservice封装soapheader头信息
- 用XFire成功发布WebService
- axis2 调用webService(包含用axis2和xfire发布的)实例,加注释
- xfire使用注解的方式发布webService
- Webservice使用xfire发布及客户端调用