- 浏览: 3431556 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
参考:http://tsinglongwu.iteye.com/blog/832704
测试调试工具介绍
1.SoapUI1.6 http://webservices.ctocio.com.cn/tips/263/7817763.shtml
2.TestMaker http://webservices.ctocio.com.cn/tips/263/7817763_2.shtml
3.WebServiceStudio http://demo.tc/Post/529
SoapUI支持eclipse插件
pom.xml
提供服务端
web.xml
非注解:applicationContext.xml
<jaxws:endpoint>有三个属性id, implementor和address。
“id”指定这个Bean在Spring上下文中唯一的标识。
“implementor”指定了这个Web Service的实现类。
“address”指定了服务在Web服务器上发布的地址。这个地址可以包含ip和端口的完整地址,也可以是只包含相对路径的地址。
注解:applicationContext.xml
注意: 同时应该在实现类加上@Component注解.
接口:使用@WebService注解,表明这个接口就是对外提供的服务.
实现类:使用@WebService(endpointInterface = "com.webservices.IHelloWorld", serviceName = "HelloWorld")注解,表明这个是IHelloWorld服务的实现类,并提供发布到外部,服务名字是HelloWorld
也可以使用@Component去注解实现类,才能使用注解方式.
运行工程,进入:http://localhost:8080/webservice/HelloWorld?wsdl ,得到的wsdl
则表示服务端的webservice已经部署成功,就等着客户端来访问.
客户端:
pom.xml, 类似服务端的pom.xml,只是名字有差别而已
使用命令得到基本的类:
wsdl2java -d /mnt/d/vmware_shared_folder/workspace/webserviceclient/src/main/java -p com.websercices.client -frontend jaxws21 http://localhost:8080/webservice/HelloWorld?wsdl
applicationContext.xml
注意:
1. org.apache.cxf.jaxws.JaxWsProxyFactoryBean要知道提供服务的接口和URL.
2. <property name="address" value="http://localhost:8080/webservice/HelloWorld" />中的/HelloWorld要与服务器端applicationContext.xml中的<jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" />的address属性对应。
建立一个测试类:
运行客户端测试类,得到结果: Hello 猪头!
测试调试工具介绍
1.SoapUI1.6 http://webservices.ctocio.com.cn/tips/263/7817763.shtml
2.TestMaker http://webservices.ctocio.com.cn/tips/263/7817763_2.shtml
3.WebServiceStudio http://demo.tc/Post/529
SoapUI支持eclipse插件
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.pandy</groupId> <artifactId>webservice</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>webservice Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>3.2.1.RELEASE</spring.version> <tomcat.version>2.1-SNAPSHOT</tomcat.version> <junit.version>3.8.1</junit.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- Spring jars --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-asm</artifactId> <version>3.1.4.RELEASE</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <!-- CXF jars --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-core</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-api</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.neethi</groupId> <artifactId>neethi</artifactId> <version>3.0.0</version> </dependency> </dependencies> <build> <finalName>webservice</finalName> </build> </project>
提供服务端
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>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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
非注解:applicationContext.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:p="http://www.springframework.org/schema/p" xmlns:jaxws="http://cxf.apache.org/jaxws" 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/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!-- 心版本去掉cxf/cxf-extension-soap.xml--> <!-- <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> --> <bean id="hello" class="com.webservices.impl.HelloWorldImpl" /> <jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" /> </beans>
<jaxws:endpoint>有三个属性id, implementor和address。
“id”指定这个Bean在Spring上下文中唯一的标识。
“implementor”指定了这个Web Service的实现类。
“address”指定了服务在Web服务器上发布的地址。这个地址可以包含ip和端口的完整地址,也可以是只包含相对路径的地址。
注解:applicationContext.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:p="http://www.springframework.org/schema/p" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/core" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.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-servlet.xml" /> <context:annotation-config /> <context:component-scan base-package="com" /> <jaxws:endpoint id="helloWorld" implementor="#helloWorldImpl" address="/HelloWorld" /> </beans>
注意: 同时应该在实现类加上@Component注解.
接口:使用@WebService注解,表明这个接口就是对外提供的服务.
package com.webservices; import javax.jws.WebParam; import javax.jws.WebService; import com.webservices.bean.User; /** * 将要用来发布的接口 * @author pandy * */ @SuppressWarnings("restriction") @WebService public interface IHelloWorld { // 加入WebParam注解,以保证xml文件中参数名字的正确性 String sayHi(@WebParam(name = "text") String text); String sayHiToUser(User user); }
实现类:使用@WebService(endpointInterface = "com.webservices.IHelloWorld", serviceName = "HelloWorld")注解,表明这个是IHelloWorld服务的实现类,并提供发布到外部,服务名字是HelloWorld
package com.webservices.impl; import java.util.LinkedHashMap; import java.util.Map; import javax.jws.WebService; import com.webservices.IHelloWorld; import com.webservices.bean.User; /** * 接口的实现类 * @author pandy * */ @SuppressWarnings({ "restriction" }) @WebService(endpointInterface = "com.webservices.IHelloWorld", serviceName = "HelloWorld") public class HelloWorldImpl implements IHelloWorld { Map<Integer, User> users = new LinkedHashMap<Integer, User>(); @Override public String sayHi(String text) { System.out.println("sayHi called"); return "Hello " + text; } @Override public String sayHiToUser(User user) { System.out.println("sayHiToUser called"); users.put(users.size() + 1, user); return "Hello " + user.getName(); } }
也可以使用@Component去注解实现类,才能使用注解方式.
运行工程,进入:http://localhost:8080/webservice/HelloWorld?wsdl ,得到的wsdl
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.webservices.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://webservices.com/" name="HelloWorld" targetNamespace="http://impl.webservices.com/"> <wsdl:import location="http://localhost:8080/webservice/HelloWorld?wsdl=IHelloWorld.wsdl" namespace="http://webservices.com/"></wsdl:import> <wsdl:binding name="HelloWorldSoapBinding" type="ns1:IHelloWorld"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHi"> <soap:operation soapAction="" style="document" /> <wsdl:input name="sayHi"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="sayHiResponse"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="sayHiToUser"> <soap:operation soapAction="" style="document" /> <wsdl:input name="sayHiToUser"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="sayHiToUserResponse"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorld"> <wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorldImplPort"> <soap:address location="http://localhost:8080/webservice/HelloWorld" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
则表示服务端的webservice已经部署成功,就等着客户端来访问.
客户端:
pom.xml, 类似服务端的pom.xml,只是名字有差别而已
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.pandy</groupId> <artifactId>webserviceclient</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>webserviceclient Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>3.2.1.RELEASE</spring.version> <tomcat.version>2.1-SNAPSHOT</tomcat.version> <junit.version>3.8.1</junit.version> </properties> <dependencies> ...... </dependencies> <build> <finalName>webserviceclient</finalName> </build> </project>
使用命令得到基本的类:
wsdl2java -d /mnt/d/vmware_shared_folder/workspace/webserviceclient/src/main/java -p com.websercices.client -frontend jaxws21 http://localhost:8080/webservice/HelloWorld?wsdl
applicationContext.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:p="http://www.springframework.org/schema/p" xmlns:jaxws="http://cxf.apache.org/jaxws" 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/jaxws http://cxf.apache.org/schema/jaxws.xsd"> <bean id="client" class="com.websercices.client.IHelloWorld" factory-bean="clientFactory" factory-method="create" /> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="com.websercices.client.IHelloWorld" /> <property name="address" value="http://localhost:8080/webservice/HelloWorld" /> </bean> </beans>
注意:
1. org.apache.cxf.jaxws.JaxWsProxyFactoryBean要知道提供服务的接口和URL.
2. <property name="address" value="http://localhost:8080/webservice/HelloWorld" />中的/HelloWorld要与服务器端applicationContext.xml中的<jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" />的address属性对应。
建立一个测试类:
package com.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.websercices.client.IHelloWorld; public class Test { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-client.xml"); IHelloWorld server = (IHelloWorld) ctx.getBean("client"); String result = server.sayHi("猪头!"); System.out.println(result); } }
运行客户端测试类,得到结果: Hello 猪头!
发表评论
-
Spring Boot 属性配置
2016-06-24 11:04 1189Spring Boot 属性配置和使用 http://blog ... -
Spring Boot 集成MyBatis
2016-06-24 10:55 2035Spring Boot 集成MyBatis http://bl ... -
Spring MVC防重复提交
2016-06-17 15:47 1653http://my.oschina.net/zyqjustin ... -
Spring容器加载完之后执行特定任务
2016-06-17 15:36 2294http://my.oschina.net/simpleton ... -
使用spring-session和shiro来代理session的配置
2016-06-16 11:21 12067使用spring-session和redis来代理sessio ... -
JSTL 的 if else : 有 c:if 没有 else 的处理
2016-06-14 09:52 1343http://blog.csdn.net/xiyuan1999 ... -
spring mvc 请求转发和重定向
2016-06-14 09:48 1407http://blog.csdn.net/jackpk/art ... -
mvc:view-controller
2016-05-18 10:26 1089http://blog.csdn.net/lzwglory/a ... -
spring配置事物的方式:注解和aop配置
2016-05-14 00:26 4113参考: Spring AOP中pointcut express ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2293http://www.oschina.net/p/uncode ... -
Mybatis分库分表扩展插件
2016-05-12 15:47 1632http://fangjialong.iteye.com/bl ... -
spring+mybatis+atomikos 实现JTA事务
2016-05-11 22:00 5531sping配置多个数据源 不同用户操作不同数据库 http:/ ... -
Spring中使用注解 @Scheduled执行定时任务
2016-05-10 09:39 1574原文:http://dwf07223.blog.51cto.c ... -
Spring中配置Websocket
2016-05-05 16:55 1285spring+websocket整合(springMVC+sp ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1324集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4806使用Spring-data进行Redis操作 http://z ... -
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
2016-05-03 13:35 1068Spring4新特性——集成Bean Validation 1 ... -
SpringMVC介绍之Validation
2016-05-03 13:10 995SpringMVC介绍之Validation http://h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3085原文: http://www.programgo.com/ar ... -
Spring MVC学习详解
2016-04-28 09:13 1011原文 http://blog.csdn.net/alsocod ...
相关推荐
本案例中,我们将讨论如何将MyBatis、Spring和CXF这三个关键框架整合在一起,以构建一个功能强大的Web服务。首先,让我们逐一了解这些框架的核心概念。 MyBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架...
"spring3+cxf2.7 整合jar包"的标题表明,这个压缩包包含的是Spring 3.x版本与CXF 2.7版本整合所需的一系列jar包。这样的整合使得开发者能够在SpringMVC环境中方便地使用CXF来实现服务的发布和调用,提高应用的灵活性...
本项目是关于"Spring+CXF+MyBatis"的整合代码实现,旨在提供一个可直接运行的服务端解决方案。接下来,我们将深入探讨这三个核心组件及其整合过程中的关键知识点。 **Spring框架** Spring是Java领域的一个重量级...
**Spring3整合CXF2.7.10详解** 在Java世界中,Spring框架和Apache CXF都是极为重要的工具。Spring作为一个全面的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)等功能,而CXF则是一个优秀的服务端和...
在IT行业中,Spring框架和CXF服务框架的整合是一个常见的任务,主要用于构建高效、灵活的分布式服务系统。本文将深入探讨Spring与CXF整合的核心概念、步骤以及它们各自的功能。 **Spring框架** 是一个开源的应用...
本教程将围绕"idea + spring4.3.7.RELEASE + cxf3.1.0"的整合进行详细讲解,旨在帮助开发者理解如何在IDEA(IntelliJ IDEA)环境中搭建一个基于Maven的Spring MVC项目,并结合Apache CXF实现Web服务的消费与提供。...
Spring3和CXF是两个非常重要的...总的来说,"spring3+cxf2.7 整合jar包"是一个非常实用的工具,它降低了Spring和CXF整合的复杂性,加速了开发进程。如果你需要在Java项目中使用Web服务,这个资源无疑是一个很好的起点。
本文将详细解析"spring+mybatis+cxf整合"这一主题,包括这三个框架的基本概念、如何整合以及整合后能实现的功能。 首先,Spring是一个开源的Java平台,它简化了开发过程,提供了强大的依赖注入(DI)和面向切面编程...
在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"spring4+mybatis3+webservice+cxf框架整合"就是一个典型的解决方案。这个项目结合了四个关键的技术组件,以构建一个强大的后端系统。 首先,Spring 4是Java...
【标签】"CXF+spring WebService CXF"强调了这些组件的集成,特别是CXF作为Web服务的主要提供者,以及与Spring的紧密配合。CXF不仅可以用作服务提供者,还可以作为客户端来消费其他服务,这在Spring的管理下变得更加...
idea+maven+spring+cxf
SSM框架是Java Web开发中常用的三大组件:Spring、SpringMVC和Mybatis的组合,它们各自负责不同的职责,协同工作以构建出高效、松耦合的Web应用程序。在这个项目中,开发者进一步集成了Apache CXF框架,用于发布Web...
本文将详细探讨"spring4+cxf3"整合的相关知识点,包括Spring 4.1.8和CXF 3.1.3的特性、整合过程以及实际应用场景。 **Spring 4.1.8** Spring 4.1.8是Spring框架的一个稳定版本,它引入了诸多改进和新功能。以下是...
"Spring + CXF + MyBatis整合"是指将这三个框架结合在一起,创建一个具备完整功能的后端系统,包括业务逻辑处理、Web服务提供和数据库交互。下面将详细介绍这个整合过程中的关键知识点: 1. **Spring配置**:首先,...
自己在网上找了很多cxf实现rest风格...现在把源码发上来,java代码只有12K,主要是lib里面的全部jar包(spring、cxf等全部的jar包), 文章地址:http://blog.csdn.net/lxn39830435731415926/article/details/39448887
Web项目中基于Maven与Spring整合的WebService之cxf的实现⬇️ 详情请参考如下链接: https://locqi.github.io/locqi.com/2018/09/05/Eclipse+Maven+Spring+CXF-create-WebService/
这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端的实现。 **Spring** 是一个广泛使用的Java企业级应用开发框架,它提供了依赖注入(DI)...
"Spring+CXF+MyBatis整合客户端代码"意味着这个项目结合了这三个框架,以实现一个完整的客户端解决方案。下面我们将详细探讨如何整合这三个框架以及它们在客户端代码中的应用。 1. **Spring框架**:在客户端代码中...
3. 接下来,我们需要实现Restful API和WebService API接口,使用Spring Boot的Restful API和CXF框架来实现学生信息的增删改查操作。 4. 最后,我们需要测试Restful API和WebService API接口,确保其正常工作。 结论...
本项目整合了Spring 4、CXF 3和Maven 3,旨在创建一个服务端和客户端的完整解决方案。以下是关于这三个组件及其整合方式的详细说明: **Spring 4** Spring是一个开源的Java框架,主要用于简化企业级应用开发。...