Java通过cxf发布和调用webservices接口

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java通过cxf发布webservices接口

第一步:创建一个工程如:cxfserver1

注:web工程和java工程都可以

第二步:把apache-cxf-2.6.1资源包中lib文件夹下所有的jar包共计75个,都拷贝到cxfserver1的lib目录下,如果你的工程师java工程自己创建一个lib文件夹

第三步:创建一个包inter,在inter下创建一个发布接口,接口名HelloWorld ,并进行webservices注解

package inter;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

/**

* 发布接口

* @author Administrator

*

*/

@WebService

public interface HelloWorld {

@WebMethod

public String sayHello(@WebParam(name="name")String name);

}

第四步:创建一个包impl,在impl下创建一个接口实现类,对接口中的方法进行功能实现

package impl;

import inter.HelloWorld;

/**

* 接口功能实现类

* @author Administrator

*

*/

public class HelloWorldImpl implements HelloWorld {

public String sayHello(String name) {

// TODO Auto-generated method stub

System.out.println("进入接口中");

return name.concat(",进入接口中");

}

}

第五步:创建一个包release,在release下创建一个接口发布主线程入口,执行该方法进行接口发布

package release;

import impl.HelloWorldImpl;

import inter.HelloWorld;

import org.apache.cxf.interceptor.LoggingInInterceptor;

import org.apache.cxf.interceptor.LoggingOutInterceptor;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

/**

* 发布接口的主线程入口类

*

*/

public class ReleasePortMain {

public static void main(String[] args) {

// TODO Auto-generated method stub

HelloWorldImpl implementor = new HelloWorldImpl();//初始化功能实现类

JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();//初始或工厂类

svrFactory.setServiceClass(HelloWorld.class);//设置发布接口对象

svrFactory.setAddress("http://localhost:9000/helloWorld");//自己设置发布接口在JVM 中的访问地址

svrFactory.setServiceBean(implementor);//设置接口功能实现类对象

svrFactory.getInInterceptors().add(new LoggingInInterceptor());//设置异常抛出

svrFactory.getOutInterceptors().add(new LoggingOutInterceptor());//设置异常抛出

svrFactory.create();//执行接口发布

}

}

注:如果执行发布接口,抛出如下异常

信息: Creating Service {http://inter/}HelloWorldService from class inter.HelloWorld

Exception in thread "main" ng.LinkageError: 正在从引导类加载器加载JAXB 2.1 API, 但此 RI (来自

jar:file:/D:/worke/codehy/cxfserver1/lib/jaxb-impl-2.2.5.jar!/com/sun /xml/bind/v2/model/impl/ModelBuilder.class) 需要 2.2 API。请使用授权目录机制将 jaxb-api.jar 放在引导类加载器中。(请参阅

/j2se/1.6.0/docs/guide/standards/)

at

com.sun.xml.bind.v2.model.impl.ModelBuilder.(ModelBuilder.jav a:178)

原因:你的java虚拟机的jre中没有geronimo-jaxws_2.2_spec-1.1.jar和jaxb-api-2.2.6.jar两个jar

相关文档
最新文档