当前位置: 代码迷 >> Web前端 >> 面向服务的架构用XFIRE配备webService服务
  详细解决方案

面向服务的架构用XFIRE配备webService服务

热度:106   发布时间:2012-08-27 21:21:57.0
面向服务的架构用XFIRE配置webService服务;

第一步要先在src里建一个META-INF > xfire > services.xml文件然后配置WSDL的配置文件
第一步:
<!-- 这个是xfirer的配置文件 -->
<service>
?<!-- 这个是xfire的名字 -->
?<name>HelloWorldService</name>
?<!-- 这个是名字空间 -->
?<namespace>urn:helloworld:service:xfire:itcast:cn</namespace>
?<!-- 这个是接口 -->
?<serviceClass>cn.itcast.xfire.service.HelloWorld</serviceClass>
?<!-- 这个是实现类 -->
?<implementationClass>cn.itcast.xfire.service.HelloWorldService</implementationClass>
</service>

第二步:
要配置web.xml
<servlet>
?<servlet-name>XFireServlet</servlet-name>
?<display-name>XFire Servlet</display-name>
?<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
?<!-- 通过初始化参数改变xfire配置文件的位置 ;如果改改了.那么services.xml就要和web.xml在一起-->
?<!--
??<init-param>
???<param-name>config</param-name>
???<param-value>services.xml</param-value>
??</init-param>
?-->
</servlet>
<servlet-mapping>
?<servlet-name>XFireServlet</servlet-name>
?<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
?<servlet-name>XFireServlet</servlet-name>
?<url-pattern>/services/*</url-pattern>
</servlet-mapping>
?
?
下面是通过jsr181的配置是通过注解来配置WSDL的返回信息:

<!-- jsr181的配置,是对于用注释方式生成webService -->
<service>
?<serviceClass>cn.itcast.xfire.service.jsr181.CustomerService</serviceClass>
?<!--? serviceFactory>jsr181</serviceFactory -->
?<!-- 这里用的是#号引用下面的Bean -->
?<serviceFactory>#jsr181ServiceFactory</serviceFactory>

</service>

<bean id="config" class="org.codehaus.xfire.aegis.type.Configuration">
?<property name="defaultExtensibleElements" value="false" />
?<property name="defaultExtensibleAttributes" value="false" />
?<property name="defaultNillable" value="false" />
?<property name="defaultMinOccurs" value="1" />
</bean>

<bean name="jsr181ServiceFactory" class="org.codehaus.xfire.annotations.AnnotationServiceFactory">
?<constructor-arg ref="xfire.transportManager" index="0" />
?<constructor-arg ref="config" index="1" type="org.codehaus.xfire.aegis.type.Configuration" />
</bean>


在cn.itcast.xfire.collection这个包下做的是返回一个对象集合和不需要序列化的的属性

要定义一个接口和实现类

<!-- 这里是我配置那个方法,那个方法就会对外提供访问 -->
EmployeeService.aegis.xml:
<mappings>
??? <mapping>
??????? <method name="getEmployeeList">
??????????? <return-type componentType="cn.itcast.xfire.collection.Employee"/>
??????? </method>
??????? <method name="getStringArr">
??????????? <return-type componentType="java.lang.String"/>
??????? </method>
??? </mapping>
</mappings>
如果要返回的集合对象就要要配置一个
Employee.aegis.xml:
<mappings>
??? <mapping>
??? ?<!-- ignore="true"表式不对外提供 这个属性不需要序列化-->
??????? <property name="password" ignore="true"/>
??? </mapping>
</mappings>

  相关解决方案