webservice开发(cxf)
2016-03-07 16:37
267 查看
1、创建一个动态的web项目,引入jar,
http://pan.baidu.com/s/1sk1vwDJ ,此网盘上有整个web项目,可以直接运行在tomcat5.5以上、jdk1.6 ,服务端配置:
1、xml配置引入:
2、在WEB-INF目录下新建一个xml,可以命名为applicationContext.xml (这里有客户端和服务端的配置,如果只需要服务端,客户端的配置可以删除掉)
3、服务端接口类(这里的服务端接口类,必须要写@WebService),如果是客户端的代码,那么必须要和服务端的包路径一样
4、服务端实现类(只有服务端才使用实现类,客户端不需要,只需要接口即可)
5、参数传递实体类
----------------------------------------------------------服务端完成-------------------------------------------------------------------------
启动tomcat,输入地址http://127.0.0.1:8080/clientws/services/
即可以看到已经定义的webservice接口类和方法
------------------------------------------------------------客户端调用服务端------------------------------------------------------------------------------------------
方法1、直接写一个测试类,写一个main函数,函数代码如下:(
方法2、配置,配置即在applicationContext.xml文件中不删除客户端代码,然后在jsp页面(这里只是列子,为了简单,所以就直接在index.jsp中写了java代码,代码如下:)
http://pan.baidu.com/s/1sk1vwDJ ,此网盘上有整个web项目,可以直接运行在tomcat5.5以上、jdk1.6 ,服务端配置:
1、xml配置引入:
<param-value>WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- WebService --> <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>/services/*</url-pattern> </servlet-mapping>
2、在WEB-INF目录下新建一个xml,可以命名为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:jaxws="http://cxf.apache.org/jaxws" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" 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 http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.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" /> <!-- Start 供WebService调用的业务Service --> <bean id="test12333WS" class="com.lbs.webservice.wsinterface.Test12333WSIMP"> </bean> <jaxws:server id="test12333WSServer" address="/test12333WS"> <jaxws:serviceBean> <ref bean="test12333WS" /> </jaxws:serviceBean> </jaxws:server> <!-- End 供WebService调用的业务Service --> <!-- Start 客户端使用 --> <bean id="client" class="com.lbs.webservice.wsinterface.Test12333WS" factory-bean="clientFactory" factory-method="create"/> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="com.lbs.webservice.wsinterface.Test12333WS"/> <property name="address" value="http://localhost:8080/clientws/services/test12333WS"/> </bean> <!-- End 客户端使用 --> </beans>
3、服务端接口类(这里的服务端接口类,必须要写@WebService),如果是客户端的代码,那么必须要和服务端的包路径一样
import javax.jws.WebService; /*注意:1、@WebService必须要写,否则会找不到接口方法、 * 2、接口Test12333WS放的路径,在什么包下要和服务端一模一样,否则也会报错 * * * * */ @WebService public interface Test12333WS { public Test12333Dto say(String name); }
4、服务端实现类(只有服务端才使用实现类,客户端不需要,只需要接口即可)
package com.lbs.webservice.wsinterface; import javax.jws.WebService; @WebService public class Test12333WSIMP implements Test12333WS { @Override public Test12333Dto say(String name){ Test12333Dto dto = new Test12333Dto(); dto.setA(123456L); dto.setB(name +"Hello World"); return dto; } }
5、参数传递实体类
package com.lbs.webservice.wsinterface; public class Test12333Dto { private java.lang.Long a; private java.lang.String b; }
----------------------------------------------------------服务端完成-------------------------------------------------------------------------
启动tomcat,输入地址http://127.0.0.1:8080/clientws/services/
即可以看到已经定义的webservice接口类和方法
------------------------------------------------------------客户端调用服务端------------------------------------------------------------------------------------------
方法1、直接写一个测试类,写一个main函数,函数代码如下:(
JaxWsProxyFactoryBean需要引入一个jar包,cxf2.2.jar,项目里面已经有了)
/** * 通过代理API调用,依赖于服务端的接口 // 调用WebService方式1、 */ public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(Test12333WS.class); factory.setAddress("http://127.0.0.1:8080/clientws/services/test12333WS"); Test12333WS service = (Test12333WS) factory.create(); Test12333Dto dto = service.say("老何"); System.out.println(dto.getA()); }
方法2、配置,配置即在applicationContext.xml文件中不删除客户端代码,然后在jsp页面(这里只是列子,为了简单,所以就直接在index.jsp中写了java代码,代码如下:)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page import="org.springframework.context.ApplicationContext"%> <%@page import="org.springframework.context.support.ClassPathXmlApplicationContext"%> <%@page import="com.lbs.webservice.wsinterface.Test12333WS"%> <%@page import="com.lbs.webservice.wsinterface.Test12333Dto"%> <% ApplicationContext factory = new ClassPathXmlApplicationContext("../applicationContext.xml"); Test12333WS client = (Test12333WS)factory.getBean("client"); Test12333Dto dto = client.say("老何"); System.out.println(dto.getAab002()); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> </body> </html>
相关文章推荐
- NaN
- AFNetworking 全部类的详解 转
- 关于ehcache缓存中eternal及timeToLiveSeconds和timeToIdleSeconds的说明
- Android串口通信
- 第一次关于计算机大数据的感悟
- Android 从app 携带参数 跳转到其他app的指定界面
- centos 6.6 Nginx 安装配置(已纠正)
- SQL语句大全
- python编写网页爬虫脚本并实现APScheduler调度
- 如何安全退出已调用多个Activity的Application?
- 软件项目管理 数独游戏项目
- 故障案例,mongo副本集主节频繁切换
- 虚拟机下centos 6网卡的添加
- 排序算法-基数排序
- debian修改配置软件源
- MyBatis XML 映射配置文件
- SharePoint 2010 - 无法发布InfoPath表单到SharePoint Library或Site Content Type的解决方案
- 字符串比较函数
- Eclipse下的Android JNI 开发
- Apache Storm 命令行操作