服务端代码:
WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 通过上下文参数指定spring配置文件的位置 --> <!-- 以下配置服务启动时就加载配置文件,调用服务时无需重新加载 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:cxf-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 配置CXF的核心Servlet --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <!-- 通过初始化参数指定cxf配置文件的位置 --> <!-- 以下不注释则调用服务时会重新加载 --> <!-- <init-param> <param-name>config-location</param-name> <param-value>classpath:cxf-servlet.xml</param-value> </init-param> --> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
/CXF_3/src/cxf-servlet.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" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> <!-- 引入CXF Bean定义如下,早期的版本中使用 --> <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" /> <!-- 第一种发布方式:简单发布(没有接口的发布) --> <!-- id:唯一标示 implementor:提供服务的类 address:服务的请求url--> <jaxws:endpoint id="helloService" implementor="cn.itcast.cxf.HelloService" address="/hello"> <!-- 加入请求的消息拦截器 --> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean> </jaxws:inInterceptors> <!-- 加入响应的消息拦截器 --> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean> </jaxws:outInterceptors> </jaxws:endpoint> <!-- 第二种发布方式:带有接口的发布 --> <!-- id:唯一标示 serviceClass:接口类型 address:服务的请求url--> <jaxws:server id="hiService" serviceClass="cn.itcast.cxf.IHiService" address="/hi"> <jaxws:serviceBean> <!-- 服务的实现类 --> <bean class="cn.itcast.cxf.HiServiceImpl"></bean> </jaxws:serviceBean> <!-- 加入请求的消息拦截器 --> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean> </jaxws:inInterceptors> <!-- 加入响应的消息拦截器 --> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean> </jaxws:outInterceptors> </jaxws:server> <jaxws:server id="personService" serviceClass="cn.itcast.cxf.service.IPersonService" address="/person"> <jaxws:serviceBean> <!-- 服务的实现类 --> <bean class="cn.itcast.cxf.service.PersonServiceImpl"></bean> </jaxws:serviceBean> <!-- 加入请求的消息拦截器 --> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean> </jaxws:inInterceptors> <!-- 加入响应的消息拦截器 --> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean> </jaxws:outInterceptors> </jaxws:server> </beans>
/CXF_3/src/cn/itcast/cxf/domain/Person.java
package cn.itcast.cxf.domain; public class Person { private String id; private String name; private String address; /** * @return the id */ public final String getId() { return id; } /** * @param id the id to set */ public final void setId(String id) { this.id = id; } /** * @return the name */ public final String getName() { return name; } /** * @param name the name to set */ public final void setName(String name) { this.name = name; } /** * @return the address */ public final String getAddress() { return address; } /** * @param address the address to set */ public final void setAddress(String address) { this.address = address; } }
/CXF_3/src/cn/itcast/cxf/service/IPersonService.java
package cn.itcast.cxf.service; import javax.jws.WebService; import javax.xml.ws.BindingType; import javax.xml.ws.soap.SOAPBinding; import cn.itcast.cxf.domain.Person; @WebService @BindingType(value=SOAPBinding.SOAP12HTTP_BINDING) public interface IPersonService { public Person findPersonById(String id); }
/CXF_3/src/cn/itcast/cxf/service/PersonServiceImpl.java
package cn.itcast.cxf.service; import cn.itcast.cxf.domain.Person; public class PersonServiceImpl implements IPersonService { public Person findPersonById(String id) { System.out.println("findPersonById()..."); Person p = new Person(); p.setId(id); p.setAddress("aa"); p.setName("jack"); return p; } }
---------------------------客户端代码------------------------------------------------------
/CXF_3_client/src/cn/itcast/cxf/service/App.java
package cn.itcast.cxf.service; public class App { /** * wsimport -s . http://localhost:8080/CXF_3/cxf/person?wsdl */ public static void main(String[] args) { IPersonServiceService ss = new IPersonServiceService(); IPersonService is = ss.getIPersonServicePort(); Person p = is.findPersonById("001"); System.out.println(p.name); } }
相关推荐
3. **配置CXF**:通过XML配置文件(如`cxf-servlet.xml`)来告诉CXF如何发布你的服务。 4. **发布服务**:将服务绑定到一个URL,使得其他应用可以通过网络访问。 5. **生成客户端代码**:使用CXF的wsdl2java工具,...
3. **安全策略**:在CXF的配置文件(如cxf.xml或服务的特定配置)中,你需要启用SSL/TLS,并指定安全策略,例如要求客户端必须提供有效的证书。 4. **代码实现**:在Java代码中,你可以使用CXF的API来设置安全属性...
3. **使用WSS4J安全令牌**:如果服务器要求使用WSS4J的令牌认证,你需要在SOAP头中添加这些令牌。这通常涉及到创建一个自定义的`Header`类,并在`SoapSerializationEnvelope`中添加这个头。 4. **发送请求**:使用`...
3. **集成工具**:CXF提供了代码生成器,可以自动生成服务客户端和服务端代码,简化开发过程。 4. **强大的调试和测试工具**:CXF提供了一套完整的测试工具,如CXFWS-Security测试工具,可以帮助开发者调试和测试...
3. **Spring与CXF集成库**:如spring-cxf、spring-ws等,这些库提供了一组Spring Bean定义,使得在Spring环境中配置和管理CXF服务变得更加简单。 4. **其他辅助库**:可能包括XML解析库(如Woodstox或Xerces)、...
3. **src/main/resources**:资源文件夹,可能包含服务的WSDL(Web Service Description Language)文件,用于描述服务的接口和消息格式。 4. **src/main/webapp**:Web应用目录,可能包含Web服务部署相关的文件,...
3. Spring Security: Spring Security是Spring框架的一个模块,专注于应用安全,提供了一套全面的访问控制和身份验证解决方案。在这个项目中,Spring Security用于保护应用程序的入口点,确保只有经过认证和授权的...
3. **服务发布与消费** 在Spring环境中,CXF服务可以通过以下方式发布: - 使用`@WebService`和`@EndpointImplementor`注解标记服务接口和实现,Spring会自动发现并发布服务。 - 通过XML配置,使用`...
3. **cxf-rt-frontend-jaxws-2.7.12.jar**: JAX-WS(Java API for XML Web Services)前端实现,使得开发者可以使用Java注解来定义Web服务接口和实现,自动生成WSDL(Web服务描述语言)文档。此模块支持服务端和...
3. **WS-*规范实现**:CXF实现了诸如WS-Security、WS-ReliableMessaging、WS-Addressing等Web服务增强规范,增强了服务的安全性、可靠性和交互性。 4. **JAX-WS和JAX-RS实现**:CXF是Java API for XML Web Services...
3. 配置Spring:在Spring配置文件中声明CXF服务,包括端点地址、服务类等信息。 4. 启动服务:通过Spring启动CXF服务,使其对外提供服务。 【Dubbo服务提供与消费】 1. 创建服务提供者:定义服务接口,实现接口...
在IT行业中,构建Web服务是常见的任务之一,而Apache CXF和Spring框架的结合使用能够高效地实现这一目标。"cxf_spring_maven"项目就是这样一个实例,它展示了如何在Spring环境中利用CXF来创建和消费Web服务,同时...
3. **Web服务**:Web服务是一种通过网络进行通信的应用程序接口,它允许不同系统之间交换数据。CXF框架提供了创建和消费Web服务的工具,包括SOAP服务和RESTful服务。 4. **POM文件**:在Maven项目中,POM文件是项目...
3. **Maven或Gradle构建文件**:如pom.xml或build.gradle,用于管理项目依赖和构建流程。 4. **测试文件**:JUnit或其他测试框架的测试用例,用于验证服务功能的正确性。 5. **部署描述符**:如WEB-INF/web.xml,...
3. 配置CXF服务端点。 4. 部署并启动服务。 5. 创建客户端并调用服务。 2.1.2 步骤详解 这里会详细解释每个步骤的实施方法,包括如何配置XML文件、如何生成服务类、如何部署服务等。 2.2 CXF与Spring集成例子 CXF...
3. `cxf-rt-wsdl.jar`:CXF的WSDL处理模块,用于生成和解析WSDL文件。 4. `spring-beans.jar`:Spring框架的beans模块,包含DI和Bean定义的相关类。 5. `spring-context.jar`:Spring框架的上下文模块,提供了AOP、...
在IT行业中,Spring、CXF和Hibernate是三个非常重要的开源框架,它们分别在不同的领域有着广泛的应用。Spring作为全面的企业级应用开发框架,CXF用于构建和整合Web服务,而Hibernate则是Java领域中最流行的持久层...
3. 服务器上的CXF接收到消息后,通过Bus解析并路由到对应的Endpoint。 4. Endpoint使用绑定和数据绑定机制将接收到的消息转换为Java对象,然后调用服务实现进行处理。 5. 处理结果反向转换为消息,再通过HTTP返回给...
3. **创建Web服务**:利用CXF提供的注解,如`@WebService`和`@WebServiceClient`,可以在服务接口和实现类上声明Web服务。对于SOAP服务,CXF会根据这些注解自动生成WSDL;对于RESTful服务,可以使用JAX-RS注解如`@...
3. **服务发布**:通过Spring的`jaxws:endpoint`或`jaxrs:endpoint`标签,将Java类映射为Web服务。 4. **服务消费**:使用`jaxws:client`或`jaxrs:client`标签配置客户端代理,方便调用远程服务。 5. **利用AOP**:...