WebService体系之——与spring的整合
WebService体系之——与spring的整合? ? ? ? ? 摘要:好处意义什么的不再赘述、前面讲的东西也都是对webservice的认识、知道它基本的实现步骤、学习最终的目的就是应用、而spring在项目中的出镜率已经爆表、本篇笔记就是两者的整合的过程。 ? 一:简介? ? ? ? ??spring与webservice的整合很简单、如过对spring有所了解的话、不难猜想两者是如何结合的、我们使用spring的目的就是看重他的依赖注入功能、可以为我们通过配置文件自动生成bean、同时可以将我们指定的属性设置好、那么两者的整合肯定是通过配置spring的配置文件、让spring为我们生成项目运行中需要使用的关于webservice的bean、并且有我们想要的一切! ? ? ? ??1、新建web项目。 ? ? ? ??2、引入jar包。 ? ? ? ??3、修改web.xml。 ? ? ? ??4、创建服务端webservice接口。 ? ? ? ??5、实现服务端webservice接口实现类。 ? ? ? ??6、新建spring的配置文件 ? ? ? ??7、将项目发布到Tomcat服务器中、并启动。 ? ? ? ??8、访问地址:有结果则说明webservice发布成功。 ? ? ? ??9、新建测试类测试webservice发布的接口。 ? 二:同一项目下具体的实现步骤? ? ? ? ??1、创建web项目。右键。。新建。。。 ? ? ? ??2、jar包的引入:前面提到过、下载下来的jar包中有一部分是spring的jar、当时没有过多提及、在这里就自然而然的想到是两者整合需要的jar包、我们直接将lib文件夹拷贝到项目的WEB-INFO下面即可。 ? ? ? ??3、web.xml的配置:主要配置spring监听和配置文件加载位置以及CXF的配置。具体代码: <?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">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-server.xml</param-value>
</context-param>
<!-- Spring 配置 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- WebServices设置 -->
<servlet>
<servlet-name>CXFServices</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServices</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
? ? ? ??4、创建服务端webservice接口——HelloService: package com.chy.ws.service;
import javax.jws.WebService;
@WebService
public interface HelloService {
public String sayHello(String name);
}
? ? ? ??5、实现服务端webservice接口实现类——HelloServiceImpl: package com.chy.ws.service;
import javax.jws.WebService;
@WebService(endpointInterface="com.chy.ws.service.HelloServiceImpl")
public class HelloServiceImpl implements HelloService {
public String sayHello(String name) {
return "hello " + name;
}
}
? ? ? ??6、在web.xml中指定的spring配置文件的加载位置:src下新建applicationContext-server.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-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- Import apache CXF bean definition 固定-->
<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" />
<!-- services接口配置 -->
<bean id="helloServicesBean" class="com.chy.ws.service.HelloServiceImpl" />
<!-- CXF 配置WebServices的服务名及访问地址 -->
<jaxws:server id="helloService" address="/HelloService" serviceClass="com.chy.ws.service.HelloService">
<jaxws:serviceBean>
<ref bean="helloServicesBean"/>
</jaxws:serviceBean>
</jaxws:server>
</beans>
? ? ? ??7、将项目发布到Tomcat服务器中、并启动。 ? ? ? ??8、访问地址:http://localhost:8080/services? 若有结果则服务发布成功。 ? ? ? ??9、新建测试类——HelloServiceClient代码: package com.chy.ws.service.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.chy.ws.service.HelloService;
public class HelloServiceClient {
public static void main(String[] args) {
invokByJava();
}
public static void invokByJava(){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(HelloService.class);
factory.setAddress("http://localhost:8080/webservice_spring_server/services/HelloService");
HelloService helloService = (HelloService)factory.create();
System.out.println(helloService.sayHello("andyChen"));
}
}
? 三:不同项目下客户端具体的实现步骤? ? ? ? ??1、实现服务端。 ? ? ? ??2、创建web项目、引入jar包、和前面一样。 ? ? ? ??3、配置web.xml——主要配置spring监听、配置文件的加载路径。 ? ? ? ??4、创建与服务器端一样的接口(注意名称、包名也要一样、可以直接拷贝)——HelloService代码与服务端相同。 ? ? ? ??5、spring配置文件applicationContext-client.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-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- Import apache CXF bean definition -->
<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" />
<!-- CXF webservices 客户端配置 -->
<jaxws:client id="helloClient" serviceClass="com.chy.ws.service.HelloService"
address="http://localhost:8080/webservice_spring_server/services/HelloService">
</jaxws:client>
</beans>
? ? ? ??6、发布、启动。 ? ? ? ??7、新建测试类:此时我们可以有两种选择:一种是使用原始的方式获取服务端、另一种是使用spring获取服务端——HelloServiceClient: ? package com.chy.ws.service.test;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.chy.ws.service.HelloService;
public class HelloServiceClient {
public static void main(String[] args) {
invokByJava();
}
/**
* use spring's application context method to obtain web service.
*/
public static void invokBySpring(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-client.xml");
HelloService helloService = context.getBean("helloClient",HelloService.class);
System.out.println(helloService.sayHello("andyChen"));
}
/**
* use original method to obtain web service.
*/
public static void invokByJava(){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(HelloService.class);
factory.setAddress("http://localhost:8080/webservice_spring_server/services/HelloService");
HelloService helloService = (HelloService)factory.create();
System.out.println(helloService.sayHello("andyChen"));
}
}
四:补充? ? ? ? ? 完整项目图: ? ? ? ??? ? ? ??
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angular中将$sce服务封装成过滤器
- 编写angular2测试并更改模拟返回值 – 让它干?
- scala – 监控关闭的图形Akka Stream
- Angular2 Webpack如何用templateUrl输出html文件
- scala – 从mapValues或flatMapValues访问键?
- angularjs – Angular ui路由器解析查询参数到布
- node.js – 当NODE_ENV = production时,Gulp构建
- 我可以通过__meteor_bootstrap__.app挂载另一个路
- AngularJS中$digest和$apply
- 如何创建webservice以及如何调用现有的webservic

