当前位置: 代码迷 >> Web前端 >> CXF2.5+Spring3.0筹建Web Services应用程序二-建立服务器端web工程
  详细解决方案

CXF2.5+Spring3.0筹建Web Services应用程序二-建立服务器端web工程

热度:917   发布时间:2012-08-08 14:32:45.0
CXF2.5+Spring3.0搭建Web Services应用程序二------建立服务器端web工程

一、新建web工程:

二、引入相应jar包:

?

? ? ? ?因只为了简单测试,此处未增加过多的jar包(但经过自己测试,已完全满足简单的功能),jar包如下(包含Spring所需要的jar包):

wss4j-1.6.4.jar

log4j-1.2.16.jar

spring-aop-3.0.6.RELEASE.jar

spring-asm-3.0.6.RELEASE.jar

spring-beans-3.0.6.RELEASE.jar

spring-context-3.0.6.RELEASE.jar

spring-core-3.0.6.RELEASE.jar

spring-expression-3.0.6.RELEASE.jar

commons-logging-1.1.1.jar

spring-web-3.0.6.RELEASE.jar

cxf-2.5.2.jar

neethi-3.0.1.jar

xmlschema-core-2.0.1.jar

wsdl4j-1.6.2.jar

xmlsec-1.4.6.jar

xalan-2.7.1.jar

serializer-2.7.1.jar

三、配置web.xml:

?

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/classes/beans.xml,/WEB-INF/classes/webservices.xml</param-value>
	</context-param>
	<!-- Spring ContextLoaderListener -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>


	<!-- Apache CXFServlet -->
	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- CXFServlet Mapping -->
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

?说明:该配置中另加载了两个文件beans.xml、webservices.xml,这两个文件主要是用来配置service与发布接口用的,在下面的配置文件中将进行介绍。

四、编写应该程序、相应配置文件:

编写一个简单的测试方法,使用Spring对其进行配置,代码如下beans.xml:

?

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="   
       http://www.springframework.org/schema/beans    
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
       http://www.springframework.org/schema/tx    
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
       http://www.springframework.org/schema/aop    
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
	default-autowire="byName">

	<!-- Service -->
	<bean id="testService" class="test.service.impl.TestServiceImpl" />
</beans>
?

?

当测试代码编写完成后,则将其接口发布,使其方便外部程序调用,其发布代码如下webservices.xml:

?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://cxf.apache.org/jaxws 
        http://cxf.apache.org/schemas/jaxws.xsd">

	<!-- Import Apache CXF Bean Definition -->
	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
	
	<jaxws:server id="testWebService" serviceClass="test.service.ITestService"
		address="/TestService">
		<jaxws:serviceBean>
			<ref bean="testService" />
		</jaxws:serviceBean>
	</jaxws:server>

</beans>

注:在编写接口跟其实现时,需要在相应接口、类前面加上“@WebService”标注,否则不能正确生成客户端代码,如:

?

@WebService
public interface ITestService {
    ......
}


@WebService
public class TestServiceImpl implements ITestService {
    ......
}
?

五、部署工程、测试:

当接口发布完成后,一个简单的WevService服务端就编写完成了,接下来就进行一个简单的测试:

在浏览器中访问定义的接口。如:http://localhost:8080/TestService?wsdl,结果如下图:


  相关解决方案