设为首页 收藏本站
查看: 822|回复: 0

[经验分享] maven+spring+cxf编写web service

[复制链接]
发表于 2017-2-28 09:14:32 | 显示全部楼层 |阅读模式
  1.创建项目



[plain] view plaincopy

  • mvn archetype:generate -DarchetypeCatalog=Internal  
  选择19,创建web项目
  2.生成eclipse项目,参见文章
3.修改web.xml



[html] view plaincopy

  • <?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>Archetype Created Web Application</display-name>  
  •     <listener>  
  •         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  •     </listener>  
  •     <!-- 设置Spring容器加载配置文件路径 -->  
  •     <context-param>  
  •         <param-name>contextConfigLocation</param-name>  
  •         <param-value>WEB-INF/applicationContext.xml</param-value>  
  •     </context-param>  
  •   
  •     <listener>  
  •         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  •     </listener>  
  •   
  •     <servlet>  
  •         <servlet-name>CXFService</servlet-name>  
  •         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  •     </servlet>  
  •   
  •     <servlet-mapping>  
  •         <servlet-name>CXFService</servlet-name>  
  •         <url-pattern>/ws/*</url-pattern>  
  •     </servlet-mapping>  
  • </web-app>  
  4.创建webservice接口



[java] view plaincopy

  • package com.sysware.demo.app.service.inf;  
  •   
  • import javax.jws.WebMethod;  
  • import javax.jws.WebParam;  
  • import javax.jws.WebResult;  
  • import javax.jws.WebService;  
  •   
  • import com.sysware.demo.app.model.RetInfo;  
  •   
  • @WebService  
  • public interface IGetInfoService  
  • {  
  •     @WebMethod(operationName = "add")  
  •     @WebResult(name = "result")  
  •     public int add(@WebParam(name = "num1") int num1,  
  •             @WebParam(name = "num2") int num2);  
  •       
  •     @WebMethod(operationName = "getRetInfo")  
  •     @WebResult(name = "result")  
  •     public RetInfo getRetInfo(@WebParam(name = "name") String name, @WebParam(name = "age") int age);  
  • }  
  5.创建webservice实现类



[java] view plaincopy

  • package com.sysware.demo.app.service.impl;  
  •   
  • import javax.jws.WebService;  
  •   
  • import com.sysware.demo.app.model.RetInfo;  
  • import com.sysware.demo.app.service.inf.IGetInfoService;  
  •   
  • @WebService(endpointInterface = "com.sysware.demo.app.service.inf.IGetInfoService")  
  • public class GetInfoServiceImpl implements IGetInfoService  
  • {  
  •   
  •     @Override  
  •     public int add(int num1, int num2)  
  •     {  
  •         return num1 + num2;  
  •     }  
  •   
  •     @Override  
  •     public RetInfo getRetInfo(String name, int age)  
  •     {  
  •         RetInfo retInfo = new RetInfo();  
  •         retInfo.setAge(age);  
  •         retInfo.setName(name);  
  •         return retInfo;  
  •     }  
  •   
  • }  
  6.返回对象



[java] view plaincopy

  • package com.sysware.demo.app.model;  
  •   
  • public class RetInfo  
  • {  
  •     private String name;  
  •     private int age;  
  •     public String getName()  
  •     {  
  •         return name;  
  •     }  
  •     public void setName(String name)  
  •     {  
  •         this.name = name;  
  •     }  
  •     public int getAge()  
  •     {  
  •         return age;  
  •     }  
  •     public void setAge(int age)  
  •     {  
  •         this.age = age;  
  •     }  
  • }  
  7.创建bean文件applicationContext.xml在WEB-INF目录下



[html] view plaincopy

  • <?xml version="1.0" encoding="UTF-8"?>  
  • <beans xmlns="http://www.springframework.org/schema/beans"  
  •     xmlns:context="http://www.springframework.org/schema/context"  
  •     xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  •     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" />  
  •     <import resource="classpath:META-INF/cxf/cxf-extension-xml.xml"/>   
  •     <bean id="getInfoServiceImpl" class="com.sysware.demo.app.service.impl.GetInfoServiceImpl"></bean>  
  •     <jaxws:endpoint id="getInfoService" implementor="#getInfoServiceImpl" address="/getInfoService"></jaxws:endpoint>  
  • </beans>  
  8.修改pom文件



[html] view plaincopy

  • <span style="white-space:pre">  </span><modelVersion>4.0.0</modelVersion>  
  • <span style="white-space:pre">  </span><groupId>com.sysware.demo</groupId>  
  • <span style="white-space:pre">  </span><artifactId>mvncxfdemo</artifactId>  
  • <span style="white-space:pre">  </span><packaging>war</packaging>  
  • <span style="white-space:pre">  </span><version>1.0-SNAPSHOT</version>  
  • <span style="white-space:pre">  </span><name>mvncxfdemo Maven Webapp</name>  
  • <span style="white-space:pre">  </span><url>http://maven.apache.org</url>     
  •         <dependencies>  
  •         <dependency>  
  •             <groupId>junit</groupId>  
  •             <artifactId>junit</artifactId>  
  •             <version>4.10</version>  
  •             <type>jar</type>  
  •             <scope>test</scope>  
  •         </dependency>  
  •         <dependency>  
  •             <groupId>org.apache.cxf</groupId>  
  •             <artifactId>cxf-rt-frontend-jaxws</artifactId>  
  •             <version>2.6.1</version>  
  •         </dependency>  
  •         <dependency>  
  •             <groupId>org.springframework</groupId>  
  •             <artifactId>spring-context</artifactId>  
  •             <version>3.1.2.RELEASE</version>  
  •         </dependency>  
  •         <dependency>  
  •             <groupId>org.springframework</groupId>  
  •             <artifactId>spring-web</artifactId>  
  •             <version>3.1.2.RELEASE</version>  
  •         </dependency>  
  •         <dependency>  
  •             <groupId>org.apache.cxf</groupId>  
  •             <artifactId>cxf-rt-transports-common</artifactId>  
  •             <version>2.5.4</version>  
  •             <type>jar</type>  
  •             <scope>compile</scope>  
  •         </dependency>  
  •         <dependency>  
  •             <groupId>org.apache.cxf</groupId>  
  •             <artifactId>cxf-rt-core</artifactId>  
  •             <version>2.6.1</version>  
  •             <type>jar</type>  
  •             <scope>compile</scope>  
  •         </dependency>  
  •         <dependency>  
  •             <groupId>org.apache.cxf</groupId>  
  •             <artifactId>cxf-rt-transports-http-jetty</artifactId>  
  •             <version>2.6.1</version>  
  •             <type>jar</type>  
  •             <scope>compile</scope>  
  •         </dependency>  
  •     </dependencies>  
  •     <build>  
  •         <finalName>mvncxfdemo</finalName>  
  •         <plugins>  
  •             <plugin>  
  •                 <groupId>org.mortbay.jetty</groupId>  
  •                 <artifactId>jetty-maven-plugin</artifactId>  
  •                 <version>8.1.5.v20120716</version>  
  •                 <configuration>  
  •                     <stopPort>9966</stopPort>  
  •                     <stopKey>foo</stopKey>  
  •                 </configuration>  
  •             </plugin>  
  •         </plugins>  
  •     </build>  
  •     <properties>  
  •         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  •     </properties>  
  9.运行



[plain] view plaincopy

  • mvn clean jetty:run-war  
  10.或者实现接口修改为



[java] view plaincopy

  • package com.sysware.demo.app.service.impl;  
  •   
  • import javax.jws.WebMethod;  
  • import javax.jws.WebParam;  
  • import javax.jws.WebResult;  
  • import javax.jws.WebService;  
  •   
  • import com.sysware.demo.app.model.RetInfo;  
  •   
  • @WebService  
  • public class GetInfoServiceImpl  
  • {  
  •   
  •     @WebMethod(operationName = "add")  
  •     @WebResult(name = "result")  
  •     public int add(@WebParam(name = "num1") int num1,  
  •             @WebParam(name = "num2") int num2)  
  •     {  
  •         return num1 + num2;  
  •     }  
  •   
  •     @WebMethod(operationName = "getRetInfo")  
  •     @WebResult(name = "result")  
  •     public RetInfo getRetInfo(@WebParam(name = "name") String name, @WebParam(name = "age") int age)  
  •     {  
  •         RetInfo retInfo = new RetInfo();  
  •         retInfo.setAge(age);  
  •         retInfo.setName(name);  
  •         return retInfo;  
  •     }  
  •   
  • }  
  由于客户端用gsoap,如果两个service在同一个目录下,将导致错误,因为两个targetNamespace相同



[html] view plaincopy

  • <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://userlist.user.webservice.service.cms.ivideo.sysware.com/" elementFormDefault="unqualified" targetNamespace="http://userlist.user.webservice.service.cms.ivideo.sysware.com/" version="1.0">  
  
为了保证两个service不在一个target里面,建议每个package下只有一个webservice

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348211-1-1.html 上篇帖子: GeoServer安装 下篇帖子: Hadoop2.2.0(yarn)编译部署手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表