加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

xfire发布webservice

发布时间:2020-12-17 02:38:38 所属栏目:安全 来源:网络整理
导读:第一步:编写xfire的服务器端 首先需要xfire的jar文件,可以到官方网站下载?,同时根据自己项目的需要下载oracle的jar文件,springjar文件和struts的jar文件。 你可以直接访问这个地址下载:http://eft21.download.csdn.net/ 然后编写web.xml文件在里面配置x

第一步:编写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();
??}
?}

}

?

完成!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读