zoukankan      html  css  js  c++  java
  • 使用Apache CXF搭建基于SOAP的Web Service

    1)创建domain实体对象

    package com.domain;
    
    public class User {
        private int id;
        private String name;
        private String address;
        private String email;
    
        public User(){}
    
        public User(String name,String address,String email){
            this.name = name;
            this.address = address;
            this.email = email;
        }
    
        ---------
        getset方法
        ---------
    
        @Override
        public String toString() {
            return this.name+","+this.email+","+this.address;
        }
    }

    2)创建业务处理接口

    package com.service;
    
    import com.domain.User;
    
    public interface IUserManager {
        public User getUserById(int id);
    
        public int setUser(String name,String address,String email);
    }
    

    3)创建业务实现类

    package com.service;
    
    import com.domain.User;
    import com.service.IUserManager;
    
    public class UserManager implements IUserManager{
    
        @Override
        public User getUserById(int id) {
            User user = new User();
            user.setId(1);
            user.setName("Rickesy");
            user.setAddress("china");
            user.setEmail("Rickesy@test.com");
            return user;
        }
    
        @Override
        public int setUser(String name,String address,String email) {
            return 0;
        }
    }

    4)创建Web Service 接口

    package com.ws;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import com.domain.User;
    
    @WebService
    public interface IService {
        public User getUserById(@WebParam(name="id") int id);
    
        public int setUser(String name,String address,String email);
    }
    

    5)创建Web Service 实现类

    package com.ws;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import com.domain.User;
    import com.service.IUserManager;
    import com.ws.IService;
    
    @WebService
    public class Service implements IService{
    
        private IUserManager userManager;
    
        public IUserManager getUserManager() {
            return userManager;
        }
    
        public void setUserManager(IUserManager userManager) {
            this.userManager = userManager;
        }
    
        @Override
        public User getUserById(@WebParam(name="id")  int id) {
            return userManager.getUserById(id);
        }
    
        @Override
        public int setUser(String name,String email,String address) {
            return userManager.setUser(name,email,address);
        }
    }

    6)配置applicationContext.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:p="http://www.springframework.org/schema/p"
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://cxf.apache.org/jaxws 
        http://cxf.apache.org/schemas/jaxws.xsd">
    
        <import resource="classpath:META-INF/cxf/cxf.xml"/>
        <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    
        <bean id="userManagerImpl" class="com.service.UserManagerImpl"></bean>
    
        <bean id="userManagerService" class="com.ws.ServiceImpl">
            <property name="userManager" ref="userManagerImpl"></property>
        </bean>
    
        <jaxws:endpoint id="userService"  
            implementor="#userManagerService" 
            address="/userManager">
        </jaxws:endpoint>
    </beans>

    7)配置web.xml

    <listener>
        <listene-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
    </servlet>  
    <servlet-mapping>   
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    8)在客户端根据wsdl文档生成代码
    可通过CXF 中wsdl2java 工具
    URL:http://localhost:8080/SOAPWebService/UserManager?wsdl

    9)在客户端编写测试代码
    Apache CXF 代理工厂

    package com.client;
    
    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    import cxf_server.IService;
    import cxf_server.User;
    
    public class ClientMain {
        public static void main(String[] args) {
    
            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            factory.setServiceClass(IService.class);
            factory.setAddress(
                "http://localhost:8080/SOAPWebService/userManager");
            Iservice service = (IService) factory.create();
            User user = service.getUserById(1);
            System.out.println(user.getEmail());
            System.out.println(user.getAddress());
        }
    }

    JAX-WS规范

    package com.client;
    
    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    import cxf_server.IService;
    import cxf_server.User;
    
    public class ClientMain {
        public static void main(String[] args) {
            Service service = (IService) new 
                ServiceImplService().getServiceImplPort();
            User user = service.getUserById(1);
            System.out.println(user.getEmail());
            System.out.println(user.getAddress());
        }
    }
  • 相关阅读:
    R tips
    向量化与并行计算
    cf relevent R package
    一篇关于相似性解释的文章,写得非常的仔细
    lsa cosine R
    install lsa package for R on ubuntu 10.04 lts lucid
    updatealternatives error no alternatives for xulrunner1.9javaplugin.so 问题解决
    《如何在windows程序中读取bios内容》
    php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
    阿里云域名备案之如何填写真实性核验单
  • 原文地址:https://www.cnblogs.com/clongxiang/p/4321544.html
Copyright © 2011-2022 走看看