CXF 入门:HelloWorld接口发布

标签: cxf helloworld 接口 | 发表时间:2012-01-02 08:31 | 作者:
出处:http://www.iteye.com

第一步:在myeclipse中新建一个web项目名为myWs,
并导入依赖的jar包(cxf,spring,apache-commons相关)

 

1、commons-logging-1.1.1.jar

2、cxf-2.4.1.jar

3、geronimo-activation_1.1_spec-1.1.jar

4、geronimo-annotation_1.0_spec-1.1.1.jar

5、geronimo-javamail_1.4_spec-1.7.1.jar

6、geronimo-jaxws_2.2_spec-1.0.jar

7、geronimo-servlet_3.0_spec-1.0.jar

8、geronimo-stax-api_1.0_spec-1.0.1.jar

9、geronimo-ws-metadata_2.0_spec-1.1.3.jar

10、jettison-1.3.jar

11、jetty-continuation-7.4.2.v20110526.jar

12、jetty-http-7.4.2.v20110526.jar

13、jetty-io-7.4.2.v20110526.jar

14、jetty-server-7.4.2.v20110526.jar

15、jetty-util-7.4.2.v20110526.jar

16、neethi-3.0.0.jar

17、saaj-api-1.3.jar

18、saaj-impl-1.3.2.jar

19、serializer-2.7.1.jar

cxf结合spring时所需jar包,此例子也需要这些,用到了spring上下文加载

(

    spring-asm-3.0.5.RELEASE.jar

    spring-beans-3.0.5.RELEASE.jar

    spring-context-3.0.5.RELEASE.jar

    spring-core-3.0.5.RELEASE.jar

    spring-expression-3.0.5.RELEASE.jar

    spring-aop-3.0.5.RELEASE.jar

    spring-web-3.0.5.RELEASE.jar

)

20、wsdl4j-1.6.2.jar

21、xalan-2.7.1.jar

22、xercesImpl.jar

23、xml-resolver-1.2.jar

24、xmlschema-core-2.0.jar

 

 

 

 

第二步:在WEB-INF中创建基本的cxf-beans.xml内容如下(作用:主要做webservice接口属性配置,通过web.xml配置加载,文件名和位置可以顺便,web.xml配置会用到)

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
	xmlns:cxf="http://cxf.apache.org/core"
	xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
	default-autowire="byType" default-lazy-init="true">

	<description>使用Apache CXF的Web Service配置文件,以下三个为固定配置文件(不需要创建)</description>
	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

	<!--在这里配置相应内容-->
	
</beans>

 

 

第三部:在web.xml中加入cxf相应配置,内容如下:

<!--cxf start-->
<!--用于加载cxf-beans.xml配置信息-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>WEB-INF/cxf-beans.xml</param-value>
	</context-param>
	<!--使用spring ContextLoaderListener 加载cxf-beans.xml-->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
<!--配置CXFServlet-->
	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<display-name>CXF Servlet</display-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<!-- url可自定义配置,用于CXFServlet请求地址拦截,访问会用到 -->
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
<!--cxf end -->

 第四步:创建webservice接口及实现类

1,创建接口
@WebService()//此注解必须,里面name,portName,targetNamespace serviceName 可以不用指定
public interface IHelloService {
	public String sayHello();
}

2,创建实现类
public class HelloWorldServiceImpl implements IHelloService {

	public String sayHello() {
		System.out.println("It's my first webservice !");
		return "你已经成功调用sayHello()方法!";
	}

}

 第五步:配置cxf-beans.xml,加入以下内容:

<!--id:随意配,implementor:指定接口具体实现类,address:随意配,访问时会用到,下面会做说明-->
<jaxws:endpoint id="HelloWorldService" implementor="com.ws.HelloWorldServiceImpl"
		address="/IHelloService">
</jaxws:endpoint>

 第六步:发布webservice到tomcat

 

1,验证ws是否发布成功:
   1.1,如果项目发布放在TOMCAT_HOME/webapps下时:
       访问http://IP地址:端口/项目名/services/{cxf-beans.xml中配置的address}?wsdl
   1.2,如果是在tomcat_home/conf的server.xml中配置的是外部站点(<Context  path="/testWs" docBase="D:\Developer\myWs" debug="0" reloadable="false" />),
   那访问方式应该是http://IP:端口/path值(没有就不用加)/services/{cxf-beans.xml中配置的address}?wsdl,
   例如:http://localhost:8080/testWs/services/IHelloService?wsdl //services对应web.xml中的<url-pattern>/services/*</url-pattern> services
    验证是否能正常看到xml格式的页面

 

GOOD LUCKY!!!

 如有不明白,还请大家提出

远程具体调用方式请参考: CXF 入门之远程接口调用



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [cxf helloworld 接口] 推荐:

CXF 入门:HelloWorld接口发布

- - ITeye博客
第一步:在myeclipse中新建一个web项目名为myWs,. 并导入依赖的jar包(cxf,spring,apache-commons相关). cxf结合spring时所需jar包,此例子也需要这些,用到了spring上下文加载. 第二步:在WEB-INF中创建基本的cxf-beans.xml内容如下(作用:主要做webservice接口属性配置,通过web.xml配置加载,文件名和位置可以顺便,web.xml配置会用到).

springbatch简介与helloworld

- - CSDN博客推荐文章
一、SpringBatch简介. Spring Batch是一个轻量级的批处理框架, 可以用于企业级海量数据处理, 它提供以下技术解决方案:. 二、SpringBatch结构. Spring Batch由应用层、核心层、基础架构层等组成:. 应用层: 包含所有的批处理作业,  使用spring框架管理程序员自定义的代码.

Hadoop HelloWorld Examples - 单表连接

- - CSDN博客云计算推荐文章
  应该是那本"Hadoop 实战"的第4个demo了,单表连接. 给出一对对的children和parents的名字,然后输出所有的grandchildren和grandparents对.   输入数据(第一列child,第二列 parent).   输出数据(第一列grandchild,第二列grandparents).

【PHP框架CodeIgniter学习】Helloworld

- - CSDN博客推荐文章
在想做API的时候 ,在搜索发现大家都钟爱推荐 CodeIgniter 这个轻量级开发框架,于是乎就搜索了一番. 原来CodeIgniter 简称CI,开源框架,好像很多的CMS系统都是基于它进行二次开发的. 自己之前使用过的PHP框架有 ThinkPHP,PHPWind等,感觉有点复杂(可能是自己不大熟悉PHP的原因).

百度地图API--HelloWorld

- - CSDN博客推荐文章
百度地图API--Hello World.           这里引用一个经典的单词"Hello World",这个词是程序界所有人都很熟悉的,我在开始学习Java的时候就是从这开始的,什么编写一个Hello World程序,甚至有的面试题中有“写一个输出Hello World的程序”来测试面试者的面向对象的思维.

webservice编程基础—cxf

- - ITeye博客
最近研究了一下cxf的使用,主要的步骤如下:. 下载最新的cxf包apache-cxf-2.6.2.tar.zip,并解压,有一个lib文件,里面的jar包,就是webservice需要的(不完全需要,看你的应用,但是懒的分),加载进你的webservice的工程即可. 配置两个配置文件,为beans.xml和web.xml,内容如下:.

WebService之JAX-WS、CXF、Spring3.0+

- - 博客园_首页
          面对工作的需要,web服务这一块一直都在身边转悠着. 既然工作中需要这些,作为程序员就应该去了解和学习. 下面主要简述采用CXF+Spring+JAX-WS来发布WebService服务,以及创建客户端调用服务.          1、先了解关于WebService的相关概念以及一些专有名词的解释:.

Hessian, CXF, Spring httpinvoke 对比

- - Java - 编程语言 - ITeye博客
做了一个 Hessian, CXF, Spring httpinvoke 速度对比. 时间消耗  cxf > spring httpinvoke > hessian. 并发为10, 调用1W次所耗时间. 当然, 都知道 cxf 和 hessian 实现以及应用场景不太一样, 但差这么多还是很意外的.

CXF WEBSERVICE 安全验证

- - 企业架构 - ITeye博客
CXF 封装的接口,不希望对外暴露 WSDL结构,找到的CXF安全认证技术都是基于拦截器,在调用的时候返回认证错误信息, 不能保护WSDL不被看到,后来看到别人的一个实现方式最简单有效,基于URL拦截的安全保护,用FILTER. 现在把这2种安全保护都记录下来,备用. 参考: http://www.myexception.cn/open-source/1505475.html.

cxf + spring 的WS Security示例

- - RSS - IT博客云
WSPasswordCallback的 passwordType属性和 password属性都为null,你只能获得用户名(identifier),一般这里的逻辑是使用这个用户名到数据库中查询其密码,然后再设置到 password属性,WSS4J会自动比较客户端传来的值和你设置的这个值. 你可能会问为什么这里CXF不把客户端提交的密码传入让我们在 ServerPasswordCallbackHandler中比较呢.