面向服务的架构用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>