zoukankan      html  css  js  c++  java
  • webService简单记录

    一、服务端

    接口

    package com.test.webservice.service;
    
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    
    @WebService
    @SOAPBinding(style=Style.RPC)
    public interface ServiceMessage {
        
        /**
         * 测试
         * @param userId
         * @return
         */
        public String getTest(String userId);
        
        
    }
        

    实现

    package com.test.webservice.service;
    
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    import javax.servlet.http.HttpServletRequest;
    import javax.xml.ws.WebServiceContext;
    import javax.xml.ws.handler.MessageContext;
    
    import org.apache.cxf.jaxws.context.WebServiceContextImpl;
    import org.apache.cxf.transport.http.AbstractHTTPDestination;
    import org.springframework.beans.factory.annotation.Autowired;
    
    
    import com.test.service.sys.KeyService;
    
    @WebService(endpointInterface="com.test.webservice.service.ServiceMessage",serviceName="ServiceMessageImpl")
    @SOAPBinding(style=Style.RPC)
    public class ServiceMessageImpl implements ServiceMessage {
    
        @Autowired
        UserService userService;
        
        
        @Override
        public String getTest(String userId) {
            User user = userService.getUserById(userId);
            return "欢迎:"+user.getName();
        }
    
    }

    这里的@Autowired注解如果单独使用会报错,需要配置spring-mvc.xml,配置如下:

    <bean id="serviceMessage" class="com.test.webservice.service.ServiceMessageImpl"></bean>
    <jaxws:endpoint id="TestService" implementor="#serviceMessage" address="/ServiceMessage" />

    在xml里增加这两行,如果<jaxws:endpoin/>这个标签报错,需要在xml的头部增加xmlns:jaxws="http://cxf.apache.org/jaxws"。

    在web.xml配置中增加一下配置:

    <!-- CXF的Servlet 测试-->
      <servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <!-- 本系统的WebService路径必须以/开头 -->
      <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/ws/*</url-pattern>
      </servlet-mapping>

    注意,如果是webservice的服务端和项目是在一起的,访问路径不能相同。

    二、客户端

    建立一个新的项目,做完客户端进行测试。

    1.在cmd命令行里输入

    wsimport -s F:\project\TheClient\src -p com.test.client -keep http://192.168.0.222:8080/ws/ServiceMessage?wsdl

    命令,F:\project\TheClient\src为新项目的src地址,com.test.client为包,http://192.168.0.222:8080/ws/ServiceMessage?wsdl是webservice的访问地址,

    2.新建测试类,

    package com.test.test;
    
    import com.test.client.ServiceMessage;
    import com.test.client.ServiceMessageImpl;
    
    public class TestService {
    
        public static void main(String[] args) {
            ServiceMessage message = new ServiceMessageImpl().getServiceMessageImplPort();
            String rst = message.getTest"1");
            System.out.println(rst);
        }
    }
  • 相关阅读:
    变量+数据类型+运算符
    变量+数据类型+运算符
    【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记
    【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记
    Linux分类
    Linux分类
    利用POI工具读取word文档并将数据存储到sqlserver数据库中
    PAT1013
    PAT乙级1023
    PAT乙级1010
  • 原文地址:https://www.cnblogs.com/ljl-blog/p/7273299.html
Copyright © 2011-2022 走看看