XFire的下一代产品CXF的入门(一)

原创 2007年10月06日 09:24:00

CXF step by step

 

http://incubator.apache.org/cxf/download.html 下载最新版本的CXF。之后解压到D:/CXF

示例的开发分为三步

l         设置编译环境

l         写一个简单的 JAX-WS 服务

l         通过JAX-WS API把你的服务发布

l         通过客户端调用你的服务

 

1. 设置编译环境

打开eclipse(其他的IDE也可以),引入如下的类库(也可以省事一点,把CXF/lib路径下的所有类库都引入)

commons-logging-1.1.jar

geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)

geronimo-annotation_1.0_spec-1.1.jar (JSR 250)

geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)

geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)

geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)

jaxb-api-2.0.jar

jaxb-impl-2.0.5.jar

jaxws-api-2.0.jar

jetty-6.1.5.jar

jetty-util-6.1.5.jar

neethi-2.0.jar

saaj-api-1.3.jar

saaj-impl-1.3.jar

stax-api-1.0.1.jar

wsdl4j-1.6.1.jar

wstx-asl-3.2.1.jar

XmlSchema-1.2.jar

xml-resolver-1.2.jar

 

引入Spring相关的jars (只对):

 

aopalliance-1.0.jar

spring-core-2.0.4.jar

spring-beans-2.0.4.jar

spring-context-2.0.4.jar

spring-web-2.0.4.jar

 

引入CXF相关的jar:

 

cxf-2.0-incubator.jar

 

2. 编写服务

eclipse里创建一个普通的JAVA PROJECT

服务的例子代码在 D:/cxf/samples/java_first_jaxws”路径下。最方便的办法是直接把代码引入项目,也可以手工创建这几个类,然后把代码拷贝过去。

 

首先写一个服务接口,例子中的HelloWorld.java。我们要注意的是这个例子使用了JSR181规范中的声明“@WebService”。

 

 

下一步实现这个服务接口,例子中的HelloWorldImpl.java。这个例子代码中通过“@WebService”标签告诉CXF运行环境把 HelloWorld”这个服务发布为WSDL

 

 

 

 

3. 发布你的服务

你要编写一个服务器程序。例子中的Server.javaServer.java有两个关键的作用,一个是启动CXF的运行环境,第二个是把上面的服务器实现发布到CXF运行环境中去。

public class Server {

    protected Server() throws Exception {

        // START SNIPPET: publish

        System.out.println("Starting Server");

        HelloWorldImpl implementor = new HelloWorldImpl();

        String address = "http://localhost:9000/helloWorld";        Endpoint.publish(address, implementor);

        // END SNIPPET: publish

    }

 

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

        new Server();

        System.out.println("Server ready...");

 

        Thread.sleep(5 * 60 * 1000);

        System.out.println("Server exiting");

        System.exit(0);

    }

}  

 

 

4.调用你的服务,客户端程序程序的编写

客户端例子代码为Client.java。客户端调用了Client.java的代码如下

package demo.hw.client;

 

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

import javax.xml.ws.soap.SOAPBinding;

 

import demo.hw.server.HelloWorld;

 

public final class Client {

 

    private static final QName SERVICE_NAME

        = new QName("http://server.hw.demo/", "HelloWorld");

    private static final QName PORT_NAME

        = new QName("http://server.hw.demo/", "HelloWorldPort");

 

    private Client() {

    }

 

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

        Service service = Service.create(SERVICE_NAME);

        // Endpoint Address

        String endpointAddress = "http://localhost:9000/helloWorld";

 

        // Add a port to the Service

        service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);

       

        HelloWorld hw = service.getPort(HelloWorld.class);

        System.out.println(hw.sayHi("World"));

 

    }

 

}

 

 

通过上面的四步,HelloWorld的例子就编写完了。可以编译执行了,由于程序中使用了标签,所以你必须要使用5.0的编译器。在Eclipse里面,配置如下图

 

运行过程:

1.       首先运行Server.java。看到如下信息,说明服务器启动成功

……

信息: jetty-6.1.5

2007-10-6 7:54:40 sun.reflect.NativeMethodAccessorImpl invoke0

信息: Started SelectChannelConnector@0.0.0.0:9000

Server ready...

 

2.       也可通过在IE中访问http://localhost:9000/helloWorld?wsdl来查看服务器的运行情况和服务的发布情况。

3.       运行Client.java,看到调用结果。

 

另外:

在使用hello world的例子中,client.java遇到了" The type class is not generic; it cannot be parameterized with arguments <T> "这样的出错提示。安装了一个新版本的JAVA 5.0 update 13后问题解决。

 

XFire的下一代产品CXF的入门

CXF step by step 在http://incubator.apache.org/cxf/download.html 下载最新版本的CXF。之后解压到D:/CXF示例的开发分为三步l    ...
  • mic_hero
  • mic_hero
  • 2011年03月18日 23:05
  • 1746

xfire与cxf冲突包解决方案【发布时异常注意】

xfire 与 cxf冲突现象解决方案 【项目发布中遇到的异常情况】 Unable to create schema compiler   项目发布环境使用的是tomcat7 冲突说明项目发布在调...
  • zqd32
  • zqd32
  • 2017年04月26日 23:23
  • 689

cxf与xfire互相调用,并且加验证机制

最近做的项目要完成与第三方系统进行webservice对接。
  • luoluo_wjx
  • luoluo_wjx
  • 2014年09月03日 10:13
  • 1786

XFire调用CXF服务端,控制台报错

XFire生成客户端代码,调用CXF发布的服务 1.可以正常调用无参的服务,如getWeather() 2.调用带参的服务就抛如下错误,如getWeather("hello"); 费解!!费解!...
  • larry_lv
  • larry_lv
  • 2011年08月26日 10:43
  • 1886

jws,axis2,Xfire以及cxf对比

首先说明下,对于以上这些开源的框架和JWS,我都用过了。   看了前面一系列Java6 JWS的文章,很显然,无论从开发还是部署角度来说,Java6的JWS都是最容易的。我们不禁回想:有了Java6,...
  • xybelieve1990
  • xybelieve1990
  • 2016年03月22日 14:59
  • 1092

xfire与cxf冲突包解决方案

1、以下四个类调用了XmlSchema-1.1.jar包    因与cxf包xmlschema-core-*.jar 冲突    故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来...
  • zqd32
  • zqd32
  • 2017年03月29日 22:26
  • 881

java开发webservice的几种方式[待总结:cxf、xfire、axis2]

文章来源:http://langgufu.iteye.com/blog/2087116 java开发webservice的几种方式(转载) 博客分类:  Web Se...
  • buster2014
  • buster2014
  • 2015年08月07日 10:56
  • 1825

Axis1、Axis2、Xfire、CXF的区别

CXF  最新版本: 2.2.2  开源服务框架,可以通过API ,如JAX-WS , 构建和开发服务。服务可以使多种协议的,例如SOAP, XML/HTTP, RESTful...
  • nmbvbvbvbv
  • nmbvbvbvbv
  • 2015年03月15日 20:32
  • 336

xfire客户端调用cxf服务端,一直报错

因为是jdk1.4,听说cxf不能用,我用的是xfire客户端去调cxf的服务端。因为服务端是别人写的,我这边看不到,但一直有报错,调试好伤呀。我在网上找了好多解决方案,都没找到。报错如下: org...
  • u014462085
  • u014462085
  • 2016年01月29日 04:39
  • 1941

xfire客户端调用cxf服务的时候 传递过去的参数,String 类型的 老是为null

在接口 定义中加入 @WebParam 写入命名空间: 例如 package com.xdja.webservices.service; --------------------- @...
  • larry_lv
  • larry_lv
  • 2011年08月26日 10:42
  • 2107
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XFire的下一代产品CXF的入门(一)
举报原因:
原因补充:

(最多只允许输入30个字)