带有Spring和OAS/OC4J的Java Web服务

带有Spring和OAS/OC4J的Java Web服务,java,web-services,oc4j,Java,Web Services,Oc4j,我在将一个简单的WebServices应用程序(如“helloworld”simple)部署到OC4J时遇到问题。同样的代码在Jetty下运行良好,但在OC4J中中断,我想知道是否有其他人也遇到过同样的问题。我正在使用Enterprise Manager部署应用程序,但部署失败,并显示以下消息: [Jan 23, 2009 8:46:20 AM] Binding TestWs web-module for application TestWs to site default-web-si

我在将一个简单的WebServices应用程序(如“helloworld”simple)部署到OC4J时遇到问题。同样的代码在Jetty下运行良好,但在OC4J中中断,我想知道是否有其他人也遇到过同样的问题。我正在使用Enterprise Manager部署应用程序,但部署失败,并显示以下消息:

    [Jan 23, 2009 8:46:20 AM] Binding TestWs web-module for application TestWs to site default-web-site under context root /TestWs 
    [Jan 23, 2009 8:46:22 AM] Operation failed with error: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws] 
Offending resource: ServletContext resource [/WEB-INF/beans.xml] 
查看beans.xml,有问题的代码似乎是xml名称空间声明:

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

    <jaxws:endpoint
        id="helloService"
        implementor="com.test.endpoint.HelloImpl"
        address="/HelloWorld" />
</beans>
还有其他人遇到过类似的问题吗?如果是这样,那么最好的解决方法是什么?我的XML技能还算中等,而且我完全不懂Web服务。但这可能是OC4J的问题

提前感谢您的帮助

编辑:据我所知,这不是一个类路径问题,除非OC4J不知道它想在哪里看到什么JAR(我知道Tomcat可以)。我的WEB-INF/lib文件夹有CXF jar、Spring jar(bean、context、core和WEB)、xml-resolver-1.2.jar和XmlSchema-1.4.2.jar。如果我需要列出WEB-INF/lib文件夹中的所有内容,我会。但同样,该计划在Jetty中有效

另一个编辑:根据我阅读的内容,这似乎是Spring和CXF jar之间的问题——CXF jar中有一个NamespaceHandler类(准确地说是在org.apache.CXF.frontend.Spring中),但似乎存在一个配置问题阻止Spring看到它

上次编辑:谢谢大家的帮助。我从来没有让CXF在OC4J中工作过,因为我的客户机版本是10.1.3.3.0。它不符合J2EE5,我很确定他们不会为了更改boot.xml而去解包oc4j.jar。但如果没有丹尼尔指给我的文件,我永远不会知道这一点

因此,我切换到XFire 1.2.6版,并在几次故障后让我的测试应用程序正常工作。一路上,我学到了一些关于OC4J的有趣的事情:

  • 在Enterprise Manager中部署时,请确保选择首先加载本地类路径
  • OC4J使用非标准XML文件,因此请确保您的应用程序未使用任何OC4J的原生XML文件(在部署设置中,取消选中当前选择的所有导入,这样,您可以确保应用程序仅使用您在WEB-INF/lib中提供的文件)
  • 如果可以,请使用其他应用程序服务器:P

再次感谢大家

我认为这是一个类路径问题

我对OC4J不太熟悉,但您是如何打包/部署web应用程序的

您需要确保CXF jar位于WAR的
WEB-INF/lib
目录中


更新:对你的评论有点困惑-如果你的spring配置在你EAR的
META-INF
目录中,那么这与你的web应用程序使用的类路径不同。因此,实际上,将CXF jar粘贴在
WEB-INF/lib
中是行不通的。您需要将JAR粘贴到EAR的顶层,或者粘贴到OC4J的所有类装入器共享的某些库中。我建议研究OC4J的企业应用程序/web应用程序类加载器层次结构文档,看看这是否能提供更多建议?

我认为这是一个类路径问题

我对OC4J不太熟悉,但您是如何打包/部署web应用程序的

您需要确保CXF jar位于WAR的
WEB-INF/lib
目录中


更新:对你的评论有点困惑-如果你的spring配置在你EAR的
META-INF
目录中,那么这与你的web应用程序使用的类路径不同。因此,实际上,将CXF jar粘贴在
WEB-INF/lib
中是行不通的。您需要将JAR粘贴到EAR的顶层,或者粘贴到OC4J的所有类装入器共享的某些库中。我建议研究OC4J的企业应用程序/web应用程序类加载器层次结构文档,看看这是否能提供更多建议?

看起来像是Spring的配置问题:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws]
Offending resource: ServletContext resource [/WEB-INF/beans.xml]

当应用程序启动时,您的web.xml中是否有任何内容可以阅读?您在代码中的任何地方都看到为该命名空间声明的NamespaceHandler吗?

看起来像是Spring的配置问题:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws]
Offending resource: ServletContext resource [/WEB-INF/beans.xml]

当应用程序启动时,您的web.xml中是否有任何内容可以阅读?您在代码中的任何地方都看到为该名称空间声明的名称空间处理程序吗?

我不想问一个明显的问题,但是您是否已经从CXF网站上查看了所有用于同时配置OS4J和CXF的内容?

我不想问显而易见的问题,但是您是否已经看过了从CXF网站上一起配置OS4J和CXF的所有内容?

这实际上是我的第一个想法,但是WEB-INF/lib拥有应用程序所需的所有库,包括cxf jar。至于第二个问题,OC4J的部署方式有点奇怪。如果你不把战争反过来塞进它自己的耳朵里,它就不会发动战争。据我所知,这个想法是让EAR的META-INF保存应用程序XML文件,然后OC4J使用这些文件部署应用程序。这实际上是我的第一个想法,但WEB-INF/lib拥有应用程序所需的所有库,包括cxf jar。至于第二个问题,OC4J的部署方式有点奇怪。如果你不把战争反过来塞进它自己的耳朵里,它就不会发动战争。据我所知,这个想法是让EAR的META-INF保存应用程序XML文件,然后OC4J使用这些文件部署应用程序。达菲,谢谢你的回答,但我对“那”指的是什么有点困惑。假设“that”是Spring的NamespaceHandler,我会在web.xml中设置什么来读取它呢?Duffy,谢谢你的回答,但是我对“that”指的是什么有点困惑。假设“that”是Spring的NamespaceHandler,那么我应该在web.xml中设置什么来读取它呢?我没有——所以感谢您提出了显而易见的问题。该文档将成为我让我的客户切换应用程序服务器的任务中的附件A。:)我没有,所以谢谢你问这个显而易见的问题。那份文件将成为我要得到的证据