您的位置:首页 > 其它

CXF简单WebService例子

2012-03-08 14:35 316 查看
apche-cxf库下地址 http://www.apache.org/dist/cxf/2.2/apache-cxf-2.2.zip

服务端

*新建一个基于Spring框的Web应用程序

*修改web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>WEB-INF/beans.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<listener>

<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>

</listener>

<servlet>

<servlet-name>CXFServlet</servlet-name>

<servlet-class>org.apache.cxf.transport.servlet.CXFServlet </servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet>

<servlet-name>HelloWordImpl</servlet-name>

<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>CXFServlet</servlet-name>

<url-pattern>/*</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>HelloWorldImpl</servlet-name>

<url-pattern>/HelloWorldImpl</url-pattern>

</servlet-mapping>

<session-config>

<session-timeout>30</session-timeout>

</session-config>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

*增加接口 HelloWorldImpl.java

package com.demo;

import javax.jws.WebService;

@WebService

public interface HelloWorld {

String sayHi(String text);

}

*增加类 HelloWorldImpl.java

package com.demo;

import javax.jws.WebService;

@WebService

public class HelloWorldImpl implements HelloWorld {

public String sayHi(String text){

return "Hi "+ text ;

}

}

*增加 beans.xml (在WEB-INF文件夹中增加beans.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.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" />

<jaxws:endpoint id="helloWord" implementor="com.demo.HelloWorldImpl" address="/HelloWord" />

</beans>

客户端

*新建Java应用程序

*添加配置文件 client-beans.xml 放在包com.demo 中

<?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/schema/jaxws.xsd">
<bean id="client" class="com.demo.HelloWorld"

factory-bean="clientFactory" factory-method="create" />

<bean id="clientFactory"

class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">

<property name="serviceClass" value="com.demo.HelloWorld" />

<property name="address" value="http://127.0.0.1:8888/test/HelloWorld" />

</bean>

</beans>

*添加web服务客户端

*添加访问服务的类 包为 com.demo 类名 Client

package com.demo;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.demo.*;

public class Client {

private Client() {

// START SNIPPET: client

ApplicationContext context = new ClassPathXmlApplicationContext(

new String[]{"com/demo/client-beans.xml"});

client = (HelloWorld) context.getBean("client");

}

public static Client self = new Client();

private HelloWord client = null;

public HelloWord getServer() {

return client;

}

public String getText(String text) throws Exception {

String response = getServer().sayHi(text);

return response;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: