`
mingliangfeng
  • 浏览: 45685 次
  • 性别: Icon_minigender_1
  • 来自: 墨尔本
社区版块
存档分类
最新评论

CXF HelloWorld on Glassfish

    博客分类:
  • J2EE
阅读更多

今天用CXF写了个HelloWorld,放在glassfish上一运行,竟然出错!反编译CXF的代码跟踪了半天,原来是抽象类javax.xml.stream.XMLOutputFactory的实现冲突。该类在glassfish/lib/javaee.jar和CXF自带的包geronimo-stax-api_1.0_spec-1.0.1.jar中都有实现。glassfish启动时会先装载javaee.jar包中的class;但CXF需要的是geronimo-stax-api_1.0_spec-1.0.1.jar里面的com.ctc.wstx.stax.WstxOutputFactory实现类。执行时异常信息如下:

Caused by: javax.xml.stream.XMLStreamException: NamespaceURI cannot be null
at com.sun.xml.stream.writers.XMLStreamWriterImpl.writeAttribute(XMLStreamWriterImpl.java:632)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:520)
at org.apache.cxf.staxutils.StaxUtils.writeElement(StaxUtils.java:440)
at org.apache.cxf.staxutils.StaxUtils.writeDocument(StaxUtils.java:421)
at org.apache.cxf.staxutils.StaxUtils.writeDocument(StaxUtils.java:411)
at org.apache.cxf.staxutils.StaxUtils.writeNode(StaxUtils.java:560)
at org.apache.cxf.transport.http.WSDLQueryHandler.writeResponse(WSDLQueryHandler.java:226)

解决办法:
在glassfish系统属性中加入javax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory,这样就让glassfish将WstxOutputFactory作为XMLOutputFactory的实现。

可以通过glassfish的控制台菜单加入,从Configuration --> System Properties进入;或直接修改domain中config目录下的配置文件domain.xml: 

<domain ... 
  <configs> 
    <config .. 
      ... 
      <system-property name="javax.xml.stream.XMLOutputFactory" value="com.ctc.wstx.stax.WstxOutputFactory"/> 
    </config> 
  </configs> 
  ... 
</domain>

 

修改后需要重启glassfish。这个CXF的HelloWorld在tomcat上是没有问题的,希望对glassfish的新手有点用。

 

3
0
分享到:
评论
7 楼 weihong01267 2013-08-28  
你好 我也遇到类似的问题 也是接口和类实现转换的错误
Caused by: java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(Unknown Source)
at com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory.getXMLInputFactory(Unknown Source)
at com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory.<clinit>(Unknown Source)
... 110 more

cxf 调用客户端时候报错,因为系统osgi搞的 以前有用axis2做client但是现在用的cxf 貌似冲突但是又必须用,考虑用过axis2算了但是发现貌似axis2也报错,有google说 在java类中   写    System.setProperty("javax.xml.stream.XMLInputFactory", "com.ctc.wstx.stax.WstxInputFactory");但是还是不行,求指点
6 楼 mingliangfeng 2009-02-13  
fhvk110 写道

我想问一下, 我用的是 cxf 作的Spring例子.

服务器用的是 glassfish3.0

请问怎么把例子工程布署到服务器上?

我看过那个视频教程.教程用的是tomcat6.0.


这个跟spring没有关系吧?部署过程应该是一样的。
5 楼 fhvk110 2009-02-02  
000000
4 楼 fhvk110 2009-02-02  
fhvk110 写道

我想问一下, 我用的是 cxf 作的Spring例子. 服务器用的是 glassfish3.0 请问怎么把例子工程布署到服务器上? 我看过那个视频教程.教程用的是tomcat6.0.




00000000000000000000000000000000000000000000000000000000000000000000
3 楼 fhvk110 2009-02-02  
我想问一下, 我用的是 cxf 作的Spring例子.

服务器用的是 glassfish3.0

请问怎么把例子工程布署到服务器上?

我看过那个视频教程.教程用的是tomcat6.0.
2 楼 mingliangfeng 2008-05-24  
如果确定是在某个服务器上作开发,当然服务器自带的功能是首先。开发应用时,可不能强迫将来的客户一定得用某个服务器,所以最好选择服务器独立的框架。
1 楼 魔力猫咪 2008-05-17  
我觉得如果服务器自身带了WS功能的话,还是用服务器自己的比较好。

相关推荐

    cxf_helloworld.rar_SOA CXF_SOA JAVA _cxf_cxf helloworld_hellowor

    "SOA CXF_SOA JAVA_cxf_cxf helloworld_helloworld"这部分描述了这个项目的核心内容,即通过CXF来理解和实践SOA,并且使用了“Hello World”作为基本的演示案例。 Apache CXF是一个开源的Java框架,主要用于构建和...

    apache cxf helloworld小例子

    本示例将引导你了解如何使用Apache CXF创建一个简单的“Hello World”应用程序,涉及客户端和服务端的实现。 首先,让我们从服务端(WS_Server)开始。在CXF中,服务端通常被称为服务提供者。为了创建一个服务,你...

    cxf helloWorld简单示例

    本示例只是一个cxf的简单的一个helloWorld程序,运行时先运行webServiceApp.java,再在地址栏中输入http://localhost:8080/helloWorld,如果在浏览器中有一串xml输出则成功,然后再运行HelloWorldClient.java文件...

    CXF的第一个例子helloWorld

    【标题】"CXF的第一个例子helloWorld"是一个基础教程,主要介绍了如何使用Apache CXF框架创建一个简单的Web服务。Apache CXF是一个开源的Java框架,它用于构建和开发Web服务,支持SOAP、RESTful等多种通信协议。这个...

    CXF的helloworld实现

    【CXF的helloworld实现】 Apache CXF 是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和Web服务。它提供了一个全面的工具集,支持WS-*标准,使得开发人员能够轻松地创建和部署SOAP和RESTful服务。在...

    cxf 入门(hello world)

    【标题】:“CXF入门(Hello World)” 【描述】:这篇文章主要介绍如何使用Apache CXF框架进行Web服务开发,通过一个简单的“Hello World”示例来帮助初学者理解CXF的基本用法。 Apache CXF是一个开源的Java框架...

    Apache CXF之helloworld

    这个"Apache CXF之helloworld"示例旨在帮助初学者理解如何使用CXF来创建和消费简单的Web服务。CXF允许开发者通过Java API(如JAX-WS和JAX-RS)来定义服务接口,并自动将其转换为HTTP服务。 首先,我们来了解一下CXF...

    WebService (一) CXF 入门 HelloWorld

    **WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行互操作。本篇将详细介绍如何使用Apache CXF框架来创建...

    使用CXF实现简单HelloWorld.swf

    使用CXF实现简单HelloWorld.swf 主要是让初学者学习cxf使用

    Web service之CXF-helloworld DEMO

    本篇将深入讲解如何利用Apache CXF实现一个简单的"Hello World" Web服务DEMO。 首先,我们需要了解Web服务的基本概念。Web服务是通过SOAP(Simple Object Access Protocol)消息交换协议进行通信的,这些消息通常以...

    cxf实用案例代码helloworld

    【CXF实用案例:HelloWorld详解】 Apache CXF是一个开源的Java框架,它主要用于构建和服务导向架构(SOA)的应用程序。CXF使得开发者能够轻松地创建和部署Web服务,同时也支持SOAP、RESTful API等多种通信协议。在...

    CXF视频:1、使用CXF实现简单的HelloWorld

    【标题】"CXF视频:1、使用CXF实现简单的HelloWorld",这是一段关于Apache CXF框架的初级教程,旨在引导初学者通过实际操作理解如何利用CXF创建一个基本的“HelloWorld”服务。Apache CXF是一个开源的Java框架,它...

    01_CXF之HelloWorld

    标题 "01_CXF之HelloWorld" 暗示了我们即将探讨的是使用Apache CXF框架实现的一个基础的“Hello, World”示例。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和 Representational State ...

    apache cxf 一个helloworld的例子

    ### Apache CXF HelloWorld 示例详解 #### 一、Apache CXF简介与特点 Apache CXF(以下简称为CXF)是一款非常流行的开源项目,用于构建和服务Web Services。它整合了两个著名的开源项目:Apache Celtix 和 XFire。...

    1.webservice-cxf-helloworld.part2

    webservice-helloworld 视频 两台机器访问,一个是虚拟机。

    1.webservice-cxf-helloworld.part1

    webservice-helloworld 视频 两台机器访问,一个是虚拟机。 高清

    CXF3.0+Spring3.2 HelloWorld实例

    在本教程中,我们将深入探讨如何使用Apache CXF 3.0与Spring 3.2框架构建一个简单的"Hello World" Web服务实例。这个过程涵盖了关键的技术组件、配置步骤以及可能遇到的问题解决策略。 首先,Apache CXF是一个开源...

    CXF整合spring同时支持JSON和XML配置的HelloWorld

    在本文中,我们将深入探讨如何将Apache CXF与Spring框架集成,以便同时支持JSON和XML的Web...这个“CXF整合spring同时支持JSON和XML配置的HelloWorld”示例为开发者提供了一个基础,从中可以扩展出复杂的企业级服务。

    使用CXF实现简单的HelloWorld

    CXF视频教程1 使用CXF实现简单的HelloWorld

    CXF 2.3 集成Spring3.0入门 HelloWorld

    标题 "CXF 2.3 集成Spring3.0入门 HelloWorld" 指向的是一个关于如何在Java项目中使用Apache CXF 2.3版本与Spring 3.0框架进行集成的教程,特别是通过一个简单的"Hello World"应用来演示这个过程。Apache CXF是一个...

Global site tag (gtag.js) - Google Analytics