首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

CFX简略实例

2012-08-30 
CFX简单实例1、下载包http://cxf.apache.org/download.html2、在Eclipse中创建一个web项目,把上面解压后的ja

CFX简单实例

1、下载包http://cxf.apache.org/download.html

2、在Eclipse中创建一个web项目,把上面解压后的jar包全部拷贝到WEB-INF/lib下。

3、JavaBean类

public class User implements Serializable {
?private static final long serialVersionUID = 1L;
?
?private String name;
?private String pwd;
?public String getName() {
??return name;
?}
?public String getPwd() {
??return pwd;
?}
?public void setName(String name) {
??this.name = name;
?}
?public void setPwd(String pwd) {
??this.pwd = pwd;
?}?
}

4、UserService接口

@WebService
public interface UserService {
?public User getUser(@WebParam(name="name")String name, @WebParam(name="pwd")String pwd);
?
?public List<User> getUsers();
}

5、UserService实现类

@WebService(endpointInterface="cn.com.cncloud.UserService", serviceName="userServiceImpl")
public class UserServiceImpl implements UserService {

?@Override
?public User getUser(String name, String pwd) {
??User user = new User();
??user.setName(name);
??user.setPwd(pwd);
??return user;
?}

?@Override
?public List<User> getUsers() {
??User u1 = new User();
??u1.setName("HanMeiMei");
??u1.setPwd("123456");
??User u2 = new User();
??u2.setName("LiLei");
??u2.setPwd("123456");
??List<User> list = new ArrayList<User>();
??list.add(u1);
??list.add(u2);
??return list;
?}

}

6、测试类

public class ServerTest {
?public static void main(String[] args) {
??UserService userService = new UserServiceImpl();
??Endpoint.publish("http://localhost:8080/userServiceImpl", userService);
?}
}

7、由于CFX自带了一个轻量级的Spring容器提供IOC服务,我们可以先启动测试部署是否成功,直接运行Test类

8、在浏览器中输入http://localhost:8080/userServiceImpl?wsdl,浏览器显示以下内容:

\u2212
<wsdl:definitions name="userServiceImpl" targetNamespace="http://cncloud.com.cn/">
\u2212
<wsdl:types>
\u2212
<xs:schema elementFormDefault="unqualified" targetNamespace="http://cncloud.com.cn/" version="1.0">
<xs:element name="getUser" type="tns:getUser"/>
<xs:element name="getUserResponse" type="tns:getUserResponse"/>
<xs:element name="getUsers" type="tns:getUsers"/>
<xs:element name="getUsersResponse" type="tns:getUsersResponse"/>
\u2212
<xs:complexType name="getUser">
\u2212
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="pwd" type="xs:string"/>
</xs:sequence>
</xs:complexType>
\u2212
<xs:complexType name="getUserResponse">
\u2212
<xs:sequence>
<xs:element minOccurs="0" name="return" type="tns:user"/>
</xs:sequence>
</xs:complexType>
\u2212
<xs:complexType name="user">
\u2212
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="pwd" type="xs:string"/>
</xs:sequence>
</xs:complexType>
\u2212
<xs:complexType name="getUsers">
<xs:sequence/>
</xs:complexType>
\u2212
<xs:complexType name="getUsersResponse">
\u2212
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:user"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
\u2212
<wsdl:message name="getUsers">
<wsdl:part element="tns:getUsers" name="parameters">
??? </wsdl:part>
</wsdl:message>
\u2212
<wsdl:message name="getUserResponse">
<wsdl:part element="tns:getUserResponse" name="parameters">
??? </wsdl:part>
</wsdl:message>
\u2212
<wsdl:message name="getUser">
<wsdl:part element="tns:getUser" name="parameters">
??? </wsdl:part>
</wsdl:message>
\u2212
<wsdl:message name="getUsersResponse">
<wsdl:part element="tns:getUsersResponse" name="parameters">
??? </wsdl:part>
</wsdl:message>
\u2212
<wsdl:portType name="UserService">
\u2212
<wsdl:operation name="getUser">
<wsdl:input message="tns:getUser" name="getUser">
??? </wsdl:input>
<wsdl:output message="tns:getUserResponse" name="getUserResponse">
??? </wsdl:output>
</wsdl:operation>
\u2212
<wsdl:operation name="getUsers">
<wsdl:input message="tns:getUsers" name="getUsers">
??? </wsdl:input>
<wsdl:output message="tns:getUsersResponse" name="getUsersResponse">
??? </wsdl:output>
</wsdl:operation>
</wsdl:portType>
\u2212
<wsdl:binding name="userServiceImplSoapBinding" type="tns:UserService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
\u2212
<wsdl:operation name="getUser">
<soap:operation soapAction="" style="document"/>
\u2212
<wsdl:input name="getUser">
<soap:body use="literal"/>
</wsdl:input>
\u2212
<wsdl:output name="getUserResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
\u2212
<wsdl:operation name="getUsers">
<soap:operation soapAction="" style="document"/>
\u2212
<wsdl:input name="getUsers">
<soap:body use="literal"/>
</wsdl:input>
\u2212
<wsdl:output name="getUsersResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
\u2212
<wsdl:service name="userServiceImpl">
\u2212
<wsdl:port binding="tns:userServiceImplSoapBinding" name="UserServiceImplPort">
<soap:address location="http://localhost:8080/userServiceImpl"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

?

?9、客户端访问服务

public class ClientTest {
?public static void main(String[] args) {
??JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
??svr.setServiceClass(UserService.class);
??svr.setAddress("http://localhost:8080/userServiceImpl");
??UserService us = (UserService)svr.create();
??User user = us.getUser("Jack", "123");
??System.out.println(user.getName());
?}
}

?

?

集成Spring

?

public class User implements Serializable {
?private static final long serialVersionUID = 1L;
?
?private String name;
?private String pwd;
?public String getName() {
??return name;
?}
?public String getPwd() {
??return pwd;
?}
?public void setName(String name) {
??this.name = name;
?}
?public void setPwd(String pwd) {
??this.pwd = pwd;
?}?
}

?

@WebService
public interface UserService {
?public User getUser(@WebParam(name="name")String name, @WebParam(name="pwd")String pwd);
?
?public List<User> getUsers();
}

?

public class UserServiceImpl implements UserService {

?@Override
?public User getUser(String name, String pwd) {
??User user = new User();
??user.setName(name);
??user.setPwd(pwd);
??return user;
?}

?@Override
?public List<User> getUsers() {
??User u1 = new User();
??u1.setName("HanMeiMei");
??u1.setPwd("123456");
??User u2 = new User();
??u2.setName("LiLei");
??u2.setPwd("123456");
??List<User> list = new ArrayList<User>();
??list.add(u1);
??list.add(u2);
??return list;
?}

}

?

public class ClientSpringTest {
?public static void main(String[] args) {
??ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
??UserService us = (UserService)context.getBean("userServiceImplClient");
??User user = us.getUser("Jack", "111111");
??System.out.println(user.getName());
??System.out.println(user.getPwd());
?}
}

?

Spring配置文件(这里为了简单,把客户端配置和服务器配置放在一起,实际开发中,这里分开为两个文件)

<?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.5.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
?default-lazy-init="true">

?<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="userServiceImpl"
??implementor="cn.com.cncloud.UserServiceImpl"
??address="/userServiceImpl" />
?

<!--?客户端配置 -->
?<jaxws:client id="userServiceImplClient"
??service/>
</beans>

?

web.xml配置文件

<?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">
?<display-name>WSSpring</display-name>
?<welcome-file-list>
??<welcome-file>index.html</welcome-file>
??<welcome-file>index.htm</welcome-file>
??<welcome-file>index.jsp</welcome-file>
??<welcome-file>default.html</welcome-file>
??<welcome-file>default.htm</welcome-file>
??<welcome-file>default.jsp</welcome-file>
?</welcome-file-list>
?<context-param>
??<param-name>contextConfigLocation</param-name>
??<param-value>classpath*:/applicationContext*.xml</param-value>
?</context-param>
?
?<listener>
??<listener-class>org.springframework.web.context.ContextLoaderListener</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-mapping>
??<servlet-name>CXFServlet</servlet-name>
??<url-pattern>/*</url-pattern>
?</servlet-mapping>
</web-app>

热点排行