webservice_cxf简单开发实例

1、导入用到的jar包:

    aopalliance-1.0.jar
    commons-logging-1.0.4.jar
    cxf-2.2.9.jar
    geronimo-activation_1.1_spec-1.0.2.jar
    geronimo-annotation_1.0_spec-1.1.1.jar
    geronimo-javamail_1.4_spec-1.6.jar
    geronimo-jaxws_2.1_spec-1.0.jar
    geronimo-jms_1.1_spec-1.1.1.jar
    geronimo-servlet_2.5_spec-1.2.jar
    geronimo-stax-api_1.0_spec-1.0.1.jar
    geronimo-ws-metadata_2.0_spec-1.1.2.jar
    jaxb-api-2.1.jar
    jaxb-impl-2.1.13.jar
    jaxb-xjc-2.1.13.jar
    jetty-6.1.21.jar
    jetty-util-6.1.21.jar
    jsr311-api-1.1.1.jar
    log4j-1.2.14.jar
    neethi-2.0.4.jar
    saaj-api-1.3.jar
    saaj-impl-1.3.2.jar
    spring-beans-2.5.6.jar
    spring-context-2.5.6.jar
    spring-context-support-2.5.6.jar
    spring-core-2.5.6.jar
    spring-jms-2.5.6.jar
    spring-tx-2.5.6.jar
    spring-web-2.5.6.jar
    wsdl4j-1.6.2.jar
    wstx-asl-3.2.9.jar
    xml-resolver-1.2.jar
    XmlSchema-1.4.5.jar

在web.xml中配置:

<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

2、定义接口,实现接口:

package ws.demo;

import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import ws.domain.User;

@WebService
public interface HelloWorld {
    @WebMethod
    public String sayHello(@WebParam(name="name") String name);
    @WebMethod
    public String sayHelloUser(@WebParam(name="user") User user);
    @WebMethod
    public List<User> findUser();

}


接口实现类:
package ws.demo;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

import ws.domain.User;

@WebService(endpointInterface="ws.demo.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
    public String sayHello(String name) {
        System.out.println("server : hello " + name);
        return "hello "+name;
    }
    
    @Override
    public List<User> findUser() {
        List<User> users = new ArrayList<User>();
        System.out.println("server find all user!!!");
        User user = new User();
        user.setId(1);
        user.setName("kai");
        User user1 = new User();
        user1.setId(2);
        user1.setName("kaikai");
        users.add(user);
        users.add(user1);
        return users;
    }

    @Override
    public String sayHelloUser(User user) {
        System.out.println("server : hello user "+user.getName());
        return "server "+user.getName();
    }
}


用到的User类:

package ws.domain;

import javax.xml.bind.annotation.XmlType;

@XmlType(name = "User")
public class User {
    private Integer id;
    private String name;
    /**
     * @return the id
     */
    public Integer getId() {
        return id;
    }
    /**
     * @param id the id to set
     */
    public void setId(Integer id) {
        this.id = id;
    }
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    

}

3、写服务端并发布:

package ws.demo;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class MyServer {
    
    public static void main(String[] args) {
        JaxWsServerFactoryBean serverFactory = new JaxWsServerFactoryBean();
        serverFactory.setServiceClass(HelloWorldImpl.class);
        serverFactory.setAddress("http://localhost:8080/helloword");
        Server server = serverFactory.create();
        server.start();
    }

}

4、写客户端:

package ws.demo;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class MyClient {
    
    public static void main(String[] args) {
        JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean();
        proxyFactory.setServiceClass(HelloWorld.class);
        proxyFactory.setAddress("http://localhost:8080/helloword");
        HelloWorld hw = (HelloWorld)proxyFactory.create();
        hw.sayHello("abc");
    }

}

如果用spring发布服务端:

1、在WEB-INF下写beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- START SNIPPET: beans -->
<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">

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <jaxws:endpoint
      id="helloWorld"
      implementor="ws.demo.HelloWorldImpl"
      address="/HelloWorld" />
      
</beans>
<!-- END SNIPPET: beans -->

然后在web.xml中配置:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/beans.xml</param-value>
    </context-param>
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

2、新建客户端项目工程:

1)用命令wsdl2java http://ip:port/projectname/HelloWorld?wsdl生成所需文件

2)将生成文件打包导入此工程中。

3)在src下新建beans.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-2.0.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd">

    <jaxws:client
        id="helloWorldClient"
        address="http://ip:port/projectname/HelloWorld"
        serviceClass="ws.demo.HelloWorld"/>
</beans>

4)写客户端:


import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ws.demo.HelloWorld;
import ws.demo.User;

public class WsClient {
    
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorldClient");
        User user = new User();
        user.setId(1);
        user.setName("a");
        System.out.println("clien: "+helloWorld.sayHelloUser(user));
        List<User> users = helloWorld.findUser();
        for(User u : users) {
            System.out.println("id:"+u.getId()+" ,name:"+u.getName());
        }
    }

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值