第一步要先在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>