`
sillycat
  • 浏览: 2487400 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Xfire在Weblogic10.3上发布的问题

    博客分类:
  • SOA
阅读更多
Xfire在Weblogic10.3上发布的问题

最近项目的Xfire的WebService要从tomcat6.0.18上移动到weblogic10.3上,平时跑得多欢的soap,到了这时,连WSDL文件都不能访问了。
当我访问WSDL文件
http://localhost:7001/services/BpmEventService?wsdl
时报错如下:

Root cause of ServletException.

java.lang.ExceptionInInitializerError
at org.codehaus.xfire.util.jdom.StaxBuilder.<init>(StaxBuilder.java:150)
at org.codehaus.xfire.wsdl.AbstractWSDL.<clinit>(AbstractWSDL.java:43)
at org.codehaus.xfire.wsdl11.builder.DefaultWSDLBuilderFactory.createWSDLBuilder(DefaultWSDLBuilderFactory.java:25)
at org.codehaus.xfire.wsdl11.builder.WSDLBuilderAdapter.write(WSDLBuilderAdapter.java:40)
at org.codehaus.xfire.DefaultXFire.generateWSDL(DefaultXFire.java:104)
Truncated. see log file for complete stacktrace

java.lang.ClassCastException: weblogic.xml.stax.XMLStreamInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
at org.codehaus.xfire.util.STAXUtils.<clinit>(STAXUtils.java:48)
at org.codehaus.xfire.util.jdom.StaxBuilder.<init>(StaxBuilder.java:150)
at org.codehaus.xfire.wsdl.AbstractWSDL.<clinit>(AbstractWSDL.java:43)
at org.codehaus.xfire.wsdl11.builder.DefaultWSDLBuilderFactory.createWSDLBuilder(DefaultWSDLBuilderFactory.java:25)

四处搜索半天,还是对比了一下以前发布的xfire原始demo,发现差异在于少了一个jar包,加在ivy配置中
<dependency org="org/codehaus/woodstox" name="wstx-asl" rev="3.2.9"/>

一切恢复正常了。

对了,还忘记了记录,我的WEB-INF下,很早就由同事放了一个weblogic.xml如下:
<?xml version="1.0" encoding="UTF-8"?>

<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<context-root>/</context-root>
<container-descriptor>
   <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>

奇怪了,服务器这样修改就OK了。

但是我本机的weblogic10.3用目录方式发布或者用war方式发布都要报如下错误:
<2009-12-7 下午07时31分19秒 CST> <Error> <Deployer> <BEA-149265> <Failure occurr
ed in the execution of deployment request with ID '1260185449734' for task '0'.
Error is: 'weblogic.application.ModuleException: 'weblogic.application.ModuleException:
at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:387)
at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
Truncated. see log file for complete stacktrace

java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:137)
at weblogic.servlet.internal.TldCacheHelper$TldIOHelper.parseXML(TldCacheHelper.java:124)
at weblogic.descriptor.DescriptorCache.parseXML(DescriptorCache.java:380)
at weblogic.servlet.internal.TldCacheHelper.parseTagLibraries(TldCacheHelper.java:65)
at weblogic.servlet.internal.War.getTagInfo(War.java:891)
Truncated. see log file for complete stacktrace

删除下面的
<dependency org="org/codehaus/woodstox" name="wstx-asl" rev="3.2.9"/>
这个包,然后再加上,就对了。。。。诡异啊。

这个有点前后矛盾,以后再仔细检查吧。
我删除了我机器上weblogic的domain测试了一下。整个流程如下:
新建domain,发布不含有wstx-asl的jar包,发布成功,但是WSDL文件无法访问,要报错;
然后添加上wstx-asl的jar包,再在这个domain上发布,发布成功,访问WSDL文件也没有问题。呵呵。诡异了。以后再仔细检查吧。我在windows上weblogic10.3和redhat上weblogic10.3都测试了一次,都是这样的。
分享到:
评论
2 楼 sillycat 2011-03-08  
^_^。确实比较迷惑。

是这样的,我先发布了一个 a.war,我删除了里面的wstx-asl.jar,可以发布并启动成功。

然后我再发布一次 a.war,这时,里面加上了wstx-asl.jar,就OK了。

我证实了这样可以使用,但是为啥,我其实也很迷惑。
1 楼 mylazygirl 2011-03-04  
引用
新建domain,发布不含有wstx-asl的jar包,发布成功,但是WSDL文件无法访问,要报错;
然后添加上wstx-asl的jar包,再在这个domain上发布,发布成功,访问WSDL文件也没有问题。

这两句话什么意思啊,看不懂

相关推荐

Global site tag (gtag.js) - Google Analytics