CXF环境配置

开发环境:

1、eclipse3.3    STP all-in-one版本   CXF2.1版本

2、建议用全新的eclipse,有可能因为以前装过Axis插件,导致你用CXF时无法编译生成WSDL文档和相应的代码,采用links文件夹来加载插件的方式比较好,不用的时候只需要将link文件注释就可以了

STP的link文件 path=D:\\Develop tools\\Component\\STP\\stp-all-in-one

3、开始配置环境:

    1)STP安装成功,工具栏中会出现菜单 SOA

    2) 打开首选项,找到 SOA TOOLS,点击 Installed Runtimes ,点击Add,添加 Apach CXF 2.0,浏览找到你解压缩的CXF目录,点击确定

    3)点击 JAX -WS,选择User wizards to overwrite defaults

    4)Apache cxf 和JAX-WS RI都选择soap1.2,保存设置,配置完毕

 4、开始编程:

      1)新建java工程,写接口类和方法,导入CXF插件lib下的jar包,点击工程,在菜单SOA中选择 JAX-WS,Enable JAX-WS,选择

java first praogranming,一次next,找到你的接口类,点击确定后会将你的接口发布成服务,

package com.jiuqi.minyang;

import javax.jws.WebService;

@WebService(name="Hello", targetNamespace="http://minyang.jiuqi.com/")
public interface Hello {
 public String say();

}

此时,在工具栏菜单Window中点击show view 选择other,找到 SOA TOOLS,选择Annotation Properties,调出annotation视图,点击接口类中的@WebService,会定位到Annotation Properties视图,将soapbanding的属性改为true,此时会增加标记,将soapbanding的style属性改为DOCUMENT

 

@SOAPBinding(use=SOAPBinding.Use.LITERAL, style=SOAPBinding.Style.DOCUMENT)
@WebService(name="Hello", targetNamespace="http://minyang.jiuqi.com/")
public interface Hello {
 public String say();

}

 

 

         2)点击工程目录下的视图,点击say()方法,在点击菜单SOA,选择JAX-WS create web method ,会为方法增加标记

@SOAPBinding(use=SOAPBinding.Use.LITERAL, style=SOAPBinding.Style.DOCUMENT)
@WebService(name="Hello", targetNamespace="http://minyang.jiuqi.com/")
public interface Hello {
 @WebMethod(operationName="say", exclude=false)
 @ResponseWrapper(targetNamespace="
http://minyang.jiuqi.com/", className="com.jiuqi.minyang.SayResponse", localName="sayResponse")
 @RequestWrapper(targetNamespace="
http://minyang.jiuqi.com/", className="com.jiuqi.minyang.Say", localName="say")
 public String say();

}
        3)选择工程,右键找到 JAX-WS TOOLS,选择generate code ,选择soap1.2 ,生成WSDL,Server,Client,点击finish完成。

         4)自动生成了三个java文件包括,HelloClient.java ,HelloImpl.java, HelloServer.java,还有服务的WSDL描述文档

         5)现在对HelloClient添加打印语句

public class HelloClient {

    public static void main(String[] args) throws Exception {
        QName serviceName = new QName("http://minyang.jiuqi.com/", "HelloService");
        QName portName = new QName("http://minyang.jiuqi.com/", "HelloPort");

        Service service = Service.create(serviceName);
        service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,
                        "http://localhost:9090/HelloPort");
        com.jiuqi.minyang.Hello client = service.getPort(portName,  com.jiuqi.minyang.Hello.class);
        System.out.println(client.say());//这是手动添加的打印语句,调用服务的方法say();
        // Insert code to invoke methods on the client here
    }

}

 

 

接口实现类

 

public class HelloImpl implements Hello {

    public java.lang.String say() { 
   
        try {
            java.lang.String _return = "你好";//给字符串赋值,“你好”
            return _return;
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new RuntimeException(ex);
        }
 
    }

}

 

      6)现在运行HelloServer.java,

public class HelloServer {

    protected HelloServer() throws Exception {
        System.out.println("Starting Server");
        Object implementor = new com.jiuqi.minyang.HelloImpl();
        String address = "http://localhost:9090/HelloPort";
        Endpoint.publish(address, implementor);
    }
   
    public static void main(String args[]) throws Exception {
        new HelloServer();
        System.out.println("Server ready...");
       
        Thread.sleep(5 * 60 * 1000);
        System.out.println("Server exiting");
        System.exit(0);
    }
}
  打印语句  Server ready...,则服务端启动,

        7) 运行HelloClient.java,会打印 “你好

        8)基本测试完毕,至于如何发布到tomcat服务器,还没试验成功,以后再补上

你可能感兴趣的:(java,eclipse,tomcat,webservice,SOA)