Spring+WebService+CXF入门(转)

Spring+WebService+CXF

1.web.xml文件配置

Java代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <welcome-file-list>
  4. <welcome-file>index.jsp</welcome-file>
  5. </welcome-file-list>
  6. <!-- Spring配置文件的加载 -->
  7. <context-param>
  8. <param-name>contextConfigLocation </param-name>
  9. <param-value>/WEB-INF/classes/applicationcontext.xml</param-value>
  10. </context-param>
  11. <listener>
  12. <listener-class>
  13. org.springframework.web.context.ContextLoaderListener
  14. </listener-class>
  15. </listener>
  16. <!-- cxf的加载 -->
  17. <servlet>
  18. <servlet-name>CXFServlet</servlet-name>
  19. <servlet-class>
  20. org.apache.cxf.transport.servlet.CXFServlet
  21. </servlet-class>
  22. </servlet>
  23. <servlet-mapping>
  24. <servlet-name>CXFServlet</servlet-name>
  25. <url-pattern>/*</url-pattern>
  26. </servlet-mapping>
  27. </web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
     <!-- Spring配置文件的加载 -->
    <context-param>
    	<param-name>contextConfigLocation </param-name>
    	<param-value>/WEB-INF/classes/applicationcontext.xml</param-value>
    </context-param>

	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
   <!-- cxf的加载 -->
	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>
			org.apache.cxf.transport.servlet.CXFServlet
		</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>  
</web-app>

2.spring的配置文件即applicationcontext.xml文件配置

Java代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:jaxws="http://cxf.apache.org/jaxws"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
  9. <!--以下三个资源是必须有的 -->
  10. <import resource="classpath:META-INF/cxf/cxf.xml" />
  11. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
  12. <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
  13. <!--服务端接口的注入 -->
  14. <bean id="hello"class="com.cxf.server.HelloImpl" />
  15. <jaxws:endpoint id="hellows" implementor="#hello" address="/Hello" />
  16. <bean id="client"class="com.cxf.client.Hello" factory-bean="clientFactory" factory-method="create"/>
  17. <bean id="clientFactory"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
  18. <property name="serviceClass" value="com.cxf.client.Hello"/>
  19. <property name="address" value="http://localhost:8080/Spring_WebService/Hello"/>
  20. </bean>
  21. </beans>
<?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.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    <!--以下三个资源是必须有的  -->
 	<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" />
 	<!--服务端接口的注入  -->
 	<bean id="hello" class="com.cxf.server.HelloImpl" />
 	<jaxws:endpoint id="hellows" implementor="#hello" address="/Hello" />
 
 	<bean id="client" class="com.cxf.client.Hello"  factory-bean="clientFactory" factory-method="create"/>   
    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">   
        <property name="serviceClass" value="com.cxf.client.Hello"/>   
        <property name="address" value="http://localhost:8080/Spring_WebService/Hello"/>   
    </bean>   
</beans>

3.客户端代码:

Java代码 复制代码 收藏代码
  1. package com.cxf.client;
  2. import javax.jws.WebService;
  3. @WebService
  4. publicinterface Hello {
  5. String SayHi(String text);
  6. }
package com.cxf.client;
import javax.jws.WebService;

@WebService
public interface Hello {

	String SayHi(String text);
}
Java代码 复制代码 收藏代码
  1. package com.cxf.client;
  2. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. publicclass HelloText {
  6. publicstaticvoid main(String[] args){
  7. JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  8. factory.setServiceClass(com.cxf.server.Hello .class);
  9. factory.setAddress("http://localhost:8080/Spring_WebService/Hello");
  10. com.cxf.server.Hello service=(com.cxf.server.Hello) factory.create();
  11. System.out.println("invoke webservice...");
  12. System.out.println("message context is:" + service.SayHi("i'm jjd"));
  13. // JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  14. // factory.setServiceClass(IHelloWorld.class);
  15. // factory.setAddress("http://localhost:9000/HelloWorld");
  16. // IHelloWorld iHelloWorld = (IHelloWorld)factory.create();
  17. // System.out.println("invoke webservice...");
  18. // System.out.println("message context is:"+iHelloWorld.sayHi(" Josen"));
  19. // System.out.println("The Calculated Result is:"+iHelloWorld.sum(10L, 20L));
  20. //
  21. //
  22. //
  23. // ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");
  24. // Hello client = (Hello)context.getBean("client");
  25. // String s="test";
  26. // if (client!=null){
  27. // s = client.SayHi("i'm jjd");
  28. // }
  29. // System.out.println("服务器返回值是:"+s);
  30. }
  31. }
package com.cxf.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.springframework.context.ApplicationContext;   
import org.springframework.context.support.ClassPathXmlApplicationContext; 


public class HelloText {

	public static void main(String[] args){
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(com.cxf.server.Hello .class);
        factory.setAddress("http://localhost:8080/Spring_WebService/Hello");
        com.cxf.server.Hello service=(com.cxf.server.Hello) factory.create();
        System.out.println("invoke webservice...");
        System.out.println("message context is:" + service.SayHi("i'm jjd"));

//        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
//        factory.setServiceClass(IHelloWorld.class);
//        factory.setAddress("http://localhost:9000/HelloWorld"); 
//        IHelloWorld iHelloWorld = (IHelloWorld)factory.create();    
//        System.out.println("invoke webservice...");    
//        System.out.println("message context is:"+iHelloWorld.sayHi("     Josen"));    
//        System.out.println("The Calculated Result is:"+iHelloWorld.sum(10L, 20L));
//        
//        
//		
//		ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");
//		Hello client = (Hello)context.getBean("client");
//		String s="test";
//		if (client!=null){
//			s = client.SayHi("i'm jjd");
//		}
//		System.out.println("服务器返回值是:"+s);
	}
}

4.服务端代码

Java代码 复制代码 收藏代码
  1. package com.cxf.server;
  2. import javax.jws.WebService;
  3. @WebService
  4. publicinterface Hello {
  5. String SayHi(String text);
  6. }
package com.cxf.server;
import javax.jws.WebService;

@WebService
public interface Hello {

	String SayHi(String text);
}
Java代码 复制代码 收藏代码
  1. package com.cxf.server;
  2. import javax.jws.WebService;
  3. @WebService(endpointInterface="com.cxf.server.Hello")
  4. publicclass HelloImpl implements Hello {
  5. public String SayHi(String text) {
  6. //System.out.println("客户端传值是:"+text);
  7. int n = text.indexOf(" ");
  8. text = text.substring(n+1, text.length());
  9. return"你好 " + text;
  10. }
  11. }

猜你喜欢

转载自chenhaiyang.iteye.com/blog/1770089
今日推荐