利用STP开发CXF

1、eclipse3.4    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.handsome.interfaces;

import javax.jws.WebService;

@WebService(name="Hello", targetNamespace="http://interfaces.handsome.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://interfaces.handsome.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://interfaces.handsome.com/")
public interface Hello {
 @WebMethod(operationName="say", exclude=false)
 @ResponseWrapper(targetNamespace="
http://interfaces.handsome.com/", className="com.handsome.interfaces.SayResponse", localName="sayResponse")
 @RequestWrapper(targetNamespace="
http://interfaces.handsome.com/", className="com.handsome.interfaces.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://interfaces.handsome.com/", "HelloService");
        QName portName = new QName("http://interfaces.handsome.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.handsome.interfaces.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 = "HELLO";//给字符串赋值

            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,会打印 “你好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值