webservice和spring相结合

Posted 夼趸蒋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice和spring相结合相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

(一):首先先导入架包

    <!-- spring并入webservice接口所需要的jar -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-ws-security</artifactId>
            <version>${cxf.version}</version>
        </dependency>

自己用的是<cxf.version>2.6.2</cxf.version>

(二)修改web.xml

<!-- 集成webservice接口 -->
    <servlet>
        <display-name>CXFServlet</display-name>
           <servlet-name>CXFServlet</servlet-name>
           <servlet-class>
                  org.apache.cxf.transport.servlet.CXFServlet
           </servlet-class>
           <load-on-startup>1</load-on-startup>
     </servlet>
	<!-- 过滤掉所有已webservice开头的链接,并且是webservice的链接 -->
     <servlet-mapping>
            <servlet-name>CXFServlet</servlet-name>
            <url-pattern>/webservice/*</url-pattern>
     </servlet-mapping>

(三)在spring配置文件中配置接口并且进行发布

<!-- 部署webservice接口 -->
    <bean id="webServiceImpl" class="com.kaishengit.business.webservice.WebServiceImpl" /> 
    <jaxws:endpoint id="webServiceImplEndpoint" implementor="#webServiceImpl" address="/test" />

注意的是在配置头上

<beans xmlns="
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

(四)接下来是贴代码时刻了

 1 package com.kaishengit.business.webservice;
 2 
 3 import javax.jws.WebMethod;
 4 import javax.jws.WebService;
 5 
 6 //使用@WebService注解标注WebServiceI接口
 7 @WebService
 8 public interface WebServiceI {
 9 
10     //使用@WebMethod注解标注WebServiceI接口中的方法
11     @WebMethod
12     String sayHello(String name);
13     
14     @WebMethod
15     String save(String name,String pwd);
16 }

 

package com.kaishengit.business.webservice;

import javax.jws.WebService;

//使用@WebService注解标注WebServiceI接口的实现类WebServiceImpl
@WebService
public class WebServiceImpl implements WebServiceI {

    public String sayHello(String name) {
        System.out.println("WebService sayHello "+name);
        return "return:sayHello "+name;
    }

    public String save(String name, String pwd) {
        System.out.println("WebService save "+name+", "+pwd);
        return "save Success";
    }
}

 

 当启动tomcat起来的时候我们输入:http://localhost:8080/myproject/webservice/test?wsdl   可以看到下图所示:

技术分享

 

说明已经发布成功了!

(五)调用,还是使用自动生成代码;首先进入项目的文件;在cmd窗口中输入:执行命令:wsimport -keep url(url为wsdl文件的路径)生成客户端代码。

例如:wsimport -keep http://localhost:8080/myproject/webservice/test?wsdl

就可以自动生成代码了。

调用代码:

 1 package com.kaishengit.business.webservice;
 2 
 3 public class Mytest {
 4 
 5     public static void main(String[] args) {
 6         WebServiceImplService w = new WebServiceImplService();
 7         WebServiceI web = w.getWebServiceImplPort();
 8         
 9         System.out.println(web.sayHello("你妹"));
10         
11     }
12     
13 }

 

可以看到:

技术分享

 

到这边调用成功!

 

 

---恢复内容结束---

以上是关于webservice和spring相结合的主要内容,如果未能解决你的问题,请参考以下文章

webservice--cxf和spring结合,发布restFull风格的服务

WebServcie结合Spring结合动态代理进行抽象封装以及性能优化

Spring Boot with Spring Boot:将基本身份验证与JWT令牌身份验证相结合[复制]

RabbitMQ:第一章:6 种工作模式以及消息确认机制(理论与代码相结合)

spring webflux 和 webservice 同一个工程

spring webflux 和 webservice 同一个工程