zoukankan      html  css  js  c++  java
  • WebService--cxf

    cxf 版本:3.1.10

    开发环境:jdk 1.6

    简单介绍一下cxf的配置过程,如果更深入的了解,可以通过下载的sample当中的example查看更具体的内容。

    1,导入jar包,这里同样我把所有cxf下的jar包导入到测试项目当中

    2,创建接口文件

      

    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;

    @WebService
    @SOAPBinding(style = Style.RPC)
    public interface IComplexUserService {

    public String getUserByName(@WebParam(name = "name") String name);

    public void setUser(String user);

    }

    3,实现接口文件

      

    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;

    @WebService
    @SOAPBinding(style = Style.RPC)
    @SuppressWarnings("deprecation")
    public class ComplexUserService implements IComplexUserService {

    public String getUserByName(@WebParam(name = "name") String name) {

    return name;
    }

    public void setUser(String user) {

    System.out.println("############Server setUser###########");
    System.out.println("setUser:" + user);
    }

    }

    4,修改Web.xml文件,添加内容如下:

      

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener><!-- 为防止内存泄漏 -->
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</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>/*</url-pattern>
    </servlet-mapping>

    5,修改applicaiontContext.xml文件:

      

    <bean id="userServiceBean" class="com.test.service.ComplexUserService" />
    <jaxws:server id="userService" serviceClass="com.test.service.IComplexUserService"
    address="/Users"> <!-- address 配置为webservice服务地址 -->
    <jaxws:serviceBean>
    <!-- 要暴露的 bean 的引用 -->
    <ref bean="userServiceBean" />
    </jaxws:serviceBean>
    </jaxws:server>

     tip:3.0之后的版本不再需要导入cxf.xml,cxf-extension-soap.xml,cxf-servlet.xml这三个文件。

    6,发布webservice,根据配置的信息访问webservice地址:http://localhost:8090/CXFWJS/Users?wsdl,从浏览器中可以看到如下内容:发布成功

      

    客户端调用:

      使用wsimport将webservice接口文件下载到本地,并在项目当中引用。下载下来的文件如下:

    客户端调用程序如下:

    public static void main(String[] args) throws Exception {

    //第一种调用
    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setServiceClass(IComplexUserService.class);
    factory.setAddress("http://localhost:8090/CXFWJS/Users");
    IComplexUserService service = (IComplexUserService) factory.create();
    System.out.println("#############Client getUserByName##############");
    String user = service.getUserByName("test");
    System.out.println(user);
    service.setUser(user);

    //第二种调用方式
    IComplexUserServiceService iComplexUserServiceService = new IComplexUserServiceService();
    IComplexUserService iComplexUserService = iComplexUserServiceService.getIComplexUserServicePort();
    String result = iComplexUserService.getUserByName("testUser");
    System.out.println(result);

    //第三种调用方式
    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    //也可以通过wsdl文件调用
    Client client = dcf.createClient("http://localhost:8090/CXFWJS/Users?wsdl");
    Object[] result2 = client.invoke("getUserByName", "test User");
    System.out.println(result2[0]);
    }

  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/adam1991/p/7645579.html
Copyright © 2011-2022 走看看