`
jiangshu
  • 浏览: 8807 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

CXF+spring demo 以及避免Could not send Message 方法

 
阅读更多
今天没事就写了一个cxf与spring结合的demo
分享一下:

服务端接口:
package org.tomas.jiang.webservices;

import javax.jws.WebService;

@WebService   //指明此接口的方式为webservice
public interface IHelloWorld
{
   public String sayHello(String text);

}



调用接口:

package org.tomas.jiang.webservices;

import javax.jws.WebService;

@WebService(endpointInterface="org.tomas.jiang.webservices.IHelloWorld")
public class HelloWorldImpl implements IHelloWorld {

@Override
public String sayHello(String text) {
  // TODO Auto-generated method stub
  return "Hello" + text;
}

}



ok,下面开始配置服务端的xml,讲到web.xml,我之前遇到Could not send Message 的问题,因为soap消息发布出去导致的,在web.xml中配置CXF会有一段映射,下面我介绍一下:



<!-- cxf 监听 -->
  <servlet>
       <servlet-name>CXFService</servlet-name>
       <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>CXFService</servlet-name>
       <url-pattern>/services/*</url-pattern>
    </servlet-mapping>



这里需要添加一个前缀/services/当然这个services是我在项目中定义的,大家可以任意定义,为什么要添加呢,我不添加行不行呢,我自己试过,不添加的话,我的tomcat可以正常启动,但是项目无法打开。苦恼,如果有高手希望指点一下。

这里的services是根据客户端的CXF配置来的



<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass" value="org.tomas.jiang.webservices.IHelloWorld" />
        <property name="address" value="http://127.0.0.1:8088/spring3test/services/HelloWorld" />
    </bean>



刚说道服务端,我们的接口和web.xml都配置完成。开始配置spring



<?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"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans.xsd

       http://cxf.apache.org/jaxws

       http://cxf.apache.org/schemas/jaxws.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<bean id = "hello" class="org.tomas.jiang.webservices.HelloWorldImpl" />
  <jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" />
</beans>



这些都是CXF与spring整合必要的东东。

启动项目打开浏览器

http://127.0.0.1:8088/spring3test/services/HelloWorld?wsdl



可以看到,我们已经发布成功了,可以看到wsdl的界面了!

我们把此页面保存为wsdl格式于本地

服务端的事情已经ok咯。





现在我们找到CXF的工具,cmd进入到CXF得bin目录下:



命令 :  wsdl2java  这个wsdl文件名





客户端,新建一个项目如wsclient:

此目录下回生成一个包,直接扔到客户端的src目录下



客户端新建一个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:p="http://www.springframework.org/schema/p"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:cxf="http://cxf.apache.org/core"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://cxf.apache.org/jaxws
    http://cxf.apache.org/schema/jaxws.xsd">

    <bean id="client" class="org.tomas.jiang.webservices.IHelloWorld" factory-bean="clientFactory"
        factory-method="create" />

    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass" value="org.tomas.jiang.webservices.IHelloWorld" />
        <property name="address" value="http://127.0.0.1:8088/spring3test/services/HelloWorld" />
    </bean>
</beans>



test:



package com.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.tomas.jiang.webservices.IHelloWorld;

public class Test {



public static void main(String args[])
{
   ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-client.xml");
   IHelloWorld client = (IHelloWorld) ctx.getBean("client");
   String result = client.sayHello("你好!");
    System.out.println(result);
}

}





控制台打印:

2012-4-27 10:11:17 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@dd5b: startup date [Fri Apr 27 10:11:17 CST 2012]; root of context hierarchy
2012-4-27 10:11:17 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [spring-client.xml]
2012-4-27 10:11:18 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@11d0a4f: defining beans [client,clientFactory]; root of factory hierarchy
2012-4-27 10:11:19 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://webservices.jiang.tomas.org/}IHelloWorldService from class org.tomas.jiang.webservices.IHelloWorld
Hello你好!





已经ok咯

谢谢






















分享到:
评论

相关推荐

    使用cxf webservice时容易出现的异常

    使用cxf webservice时容易出现的异常

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...

    cxf+spring webservice demo client

    【标题】:“cxf+spring webservice demo client” 在IT领域,Web服务是一种常见的系统间交互方式,它允许不同应用程序之间共享数据和服务。本示例是关于如何使用Apache CXF和Spring框架创建一个Web服务客户端的...

    基于maven的cxf+spring简单demo

    【标题】"基于maven的cxf+spring简单demo"是一个示例项目,它演示了如何结合Apache CXF和Spring框架来构建一个简单的Web服务。Apache CXF是一个开源的Java框架,主要用于创建、部署和管理Web服务。而Spring是另一个...

    cxf+spring+client

    在这个"**cxf+spring+client**"的主题中,我们将深入探讨CXF与Spring框架结合创建客户端服务的细节,以及如何利用Spring MVC来增强应用程序的交互性。 首先,让我们关注CXF。CXF允许开发者使用Java编程语言来定义和...

    CXF+SPRING例子

    【CXF+SPRING例子】是一个关于如何将Apache CXF与Spring框架整合的示例项目。Apache CXF是一个开源服务框架,它允许开发者创建和消费Web服务,而Spring框架则是Java应用开发的强大支撑,提供了依赖注入、AOP(面向切...

    CXF2.1.3+spring3.0+struts2.3.4

    【标签】"CXF+spring WebService CXF"强调了这些组件的集成,特别是CXF作为Web服务的主要提供者,以及与Spring的紧密配合。CXF不仅可以用作服务提供者,还可以作为客户端来消费其他服务,这在Spring的管理下变得更加...

    cxf+spring实现webservice

    以上是CXF+Spring实现Web Service的基本流程和关键知识点。实际应用中,还需要根据具体的需求和环境进行适当的调整和扩展。例如,如果涉及到大型分布式系统,可能还需要考虑服务治理、负载均衡等问题。通过熟练掌握...

    cxf+spring+tomcat

    【标题】"cxf+spring+tomcat"的组合是一个常见的Web服务开发环境,它将Apache CXF(一个用于构建和消费Web服务的开源框架)与Spring框架(一个广泛使用的Java企业级应用开发框架)以及Tomcat(一个流行的轻量级Java...

    cxf+spring webservice server demo

    【标题】"cxf+spring webservice server demo"是一个基于Apache CXF和Spring框架构建的Web服务服务器端示例项目。这个项目展示了如何将CXF与Spring集成,以创建、部署和运行一个高效的Web服务。 【描述】指出,由于...

    cxf+spring整合

    "CXF+Spring整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...

    cxf+spring 完全整合

    代码是我一行行敲的,直接部署就能用,service,client端实现了:(cxf用的是3.0最新的) 1维数组, 2维数组, 3维数组, List, List , Map(adapter方式实现的), 直接返回bean, 返回object[], 做了header的安全认证校验.

    cxf+Spring2.5

    【标题】"cxf+Spring2.5" 指的是使用Apache CXF框架与Spring 2.5版本进行集成的示例项目。Apache CXF是一个开源服务框架,它允许开发人员创建和消费Web服务,而Spring框架则是一个广泛使用的Java企业级应用的IOC...

    cxf+spring使用经验

    【cxf+spring 使用经验】 Apache CXF 是一个开源的 Web 服务框架,它整合了 Celtix 和 XFire 两大项目的优势,提供了全面的 JAX-WS 支持,允许开发者通过 Code First 或 WSDL First 的方式来创建和消费 Web 服务。...

    cxf+spring3.1整合demo

    【标题】"cxf+spring3.1整合demo"是一个示例项目,它演示了如何将Apache CXF服务框架与Spring 3.1版本进行集成。Apache CXF是一个开源的Web服务框架,它允许开发人员创建和消费各种类型的Web服务,而Spring是一个...

    cxf+spring开发webservice实例(java)

    web项目使用spring和cxf的一个开发实例,有简单的代码样例和jar。是一个完整的项目,最终发布完成时访问 http://ip:port/项目名称/webservices/ 就会发现你发布的webservice服务。

    CXF+Spring 完整版例子

    【标题】"CXF+Spring 完整版例子"是一个示例项目,它演示了如何在Spring框架中集成Apache CXF来构建一个完整的Web服务应用。Apache CXF是一个开源服务框架,它允许开发者创建和消费各种不同类型的Web服务,包括SOAP...

    cxf+spring所需的jar包

    本压缩包“cxf+spring”包含了这两者结合开发所需的jar包,旨在为开发者提供一个快速搭建基于CXF和Spring环境的基础。 1. CXF框架详解: CXF(Code first eXtended Framework)是基于Java的Web服务开发工具,它...

    cxf+spring的webservice实例

    总的来说,"cxf+spring的webservice实例"是一个实践性的教程,旨在帮助开发者理解如何在Spring环境中利用CXF快速构建和部署Web服务。通过这个实例,你可以掌握从创建服务到发布、测试的整个流程,进一步提升你的Java...

    CXF+Spring范例

    java实现cxf范例,含客服端和服务器端,与spring整合,含所需的所有jar,参考网站http://www.blogjava.net/icewee/archive/2012/07/06/382399.html

Global site tag (gtag.js) - Google Analytics