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接口




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值