xfire配置webService的方法步骤

第一步:建一个secn的services.xml文件  META-INF > xfire > services.xml
<?xml version="1.0"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
	<!-- 这个是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>	
</beans>

第二步:建一个web.xml文件
<!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>
	<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>
</web-app>


测试方法一:
@Test
	public void testXfire1() throws Exception{
		Service service = new Service();
		Call call = (Call) service.createCall();
		String url = "http://localhost:8080/secn/services/HelloWorldService" ;
		call.setTargetEndpointAddress(new URL(url));
		call.setOperationName("sayHello");
		System.out.println(call.invoke(new Object[]{"tom"}));
	}

测试方法二:这个url地址一定要加上?wsdl并在 new Object[]{"tom"})[0]这里要加上[0]
@Test
	public void testXfire2() throws Exception{
		String url = "http://localhost:8080/secn/services/HelloWorldService?wsdl" ;
		Client c = new Client(new URL(url));
		System.out.println(c.invoke("sayHello", new Object[]{"tom"})[0]);
	}
测试方法三:
@Test
	public void testXfire3() throws Exception{
		String url = "http://localhost:8080/secn/services/HelloWorldService" ;
		ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
		org.codehaus.xfire.service.Service serviceModel = serviceFactory.create(IHelloWorld.class);
		XFireProxyFactory proxyFactory = new XFireProxyFactory();
		IHelloWorld hw = (IHelloWorld)proxyFactory.create(serviceModel,url);
		System.out.println(hw.sayHello("Tome"));
	}

第三步:
<!-- jsr181的配置,是对于用注释方式生成webService -->
	<service>
		<serviceClass>cn.com.secn.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>

CostomerService类:
//在这里也可以添服务名
@WebService
public class CustomerService {
	private List<Customer> customers = new ArrayList<Customer>();

	public CustomerService() {
	}

	//header = true是以头部发送方式
	@WebMethod
	@WebResult(name = "Customers") //返回类型
	public Collection<Customer> getCustomers(
			@WebParam(name = "UserToken", header = true)
			UserToken auth) {
		authorize(auth);

		return customers;
	}

	private void authorize(UserToken auth) {
		System.out.println(auth.getUsername());
		System.out.println(auth.getPassword());
	}

	@WebMethod
	public String addCustomer(@WebParam(name = "UserToken", header = true)
	UserToken auth, @WebParam(name = "customer") Customer customer) {
		authorize(auth);

		customers.add(customer);

		return "tommm";
	}
}









 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值