Java通过cxf发布和调用webservices接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.
原因:你的java虚拟机的jre中没有geronimo-jaxws_2.2_spec-1.1.jar和jaxb-api-2.2.6.jar两个jar