spring+webservice记录

  最近因为公司需要对外提供webservice服务,研究了一下网上的资料.终于做了出来,现在整理一下

web.xml

复制代码
<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>/services/*</url-pattern>
    </servlet-mapping>
复制代码

其中 <url-pattern>/services/*</url-pattern> 是对cxf的一个截取,当访问  localhost:8080/demo/services(localhost:8080/demo是我的项目访问地址) 的时候便可以进入了.

 applicationContext_webservice.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.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <jaxws:server name="HelloWeb" address="/HelloWeb"
        serviceClass="com.xxx.hgdf.webservice.xxx.HelloWeb">
        <jaxws:serviceBean>
            <bean class="com.xxx.hgdf.webservice.xxx.impl.HelloWebImpl"></bean>
        </jaxws:serviceBean>
    </jaxws:server>
    
</beans>
复制代码

其中 server name="HelloWeb" 设置我们的服务名称(HelloWebService,HelloWeb后面加上Service便是服务名称了)

address="/HelloWeb",wsdl访问地址.如果我们要直接进入访问页面的话,就可以直接输入 localhost:8080/demo/services/HelloWeb?wsdl


接口:

@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWeb{
    public String Login(@WebParam(name = "user")User user);
    public void setUser(@WebParam(name = "user")User user);
}

我们可以在@WebService中加入一些设置比如:

@WebService(name = "DemoInterfaces",targetNamespace = "http://xxx.sh.cmcc/Demo")

那么在生成的wsdl文件中 portType便会改变
<wsdl:portType name="DemoInterfaces">

targetNamespace就会为<xs:schema targetNamespace="http://xxx.sh.cmcc/Demo"
(targetNamespace默认为我们的包名倒过来,比如我的包路径为 com.dcx.demo 罢了targetNamespace默认就是 demo.dcx.com)

实现类:

复制代码
@WebService
@SOAPBinding(style = Style.RPC)
public class HelloWebImpl implements HelloWeb{
    public String Login(
            @WebParam(name = "users") User user) {
//        User user = user0.getUser();
        System.out.println(user.getName()+"登录");
        return user.getName()+" 欢迎您登录";
    }
      public void setUser(@WebParam(name = "user")User user) {
            System.out.println("############Server setUser###########");
            System.out.println("setUser:" + user);
        }
}
复制代码

实体类user:

public class User  implements Serializable{
    private static final long serialVersionUID = 1L;

...
}

在这里唯一需要注意的就是我们要在实体类上实现Serializable接口

 以上内容来源于百科书,可以关注我了解更多.

 

 

posted @   玄之又玄众妙之门  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

哦哦查

研学服务

知芽网

醉学网

点击右上角即可分享
微信分享提示