当前位置: 首页 > 知识库问答 >
问题:

使用Apache CXF的Spring Webservice没有部署在客户端服务器(weblogic)中

耿建弼
2023-03-14

我正在为一个应用程序构建SpringWebServices。我使用ApacheCXF创建Web服务,使用maven构建war。我正在使用WebLogic12c在我的PC中部署webservice。我正在使用“org.codehaus.jackson.jaxrs.JacksonJsonProvider”作为jsonProvider。代码部署在运行机器的服务器上,没有任何错误。但是,当我尝试在具有weblogic 12.2.1的客户端计算机中部署相同的代码时,部署失败,出现以下错误:

在Web应用程序中启动时,“泽西”预加载失败:“broker-ws.war”。

<[ACTIVE] ExecuteThread: '12' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1490020025257> <BEA-101216> <Servlet: "Jersey" failed to preload on startup in Web application: "broker-ws.war".
    at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
    at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
    at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
    at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:491)
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321)
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559)
    at javax.servlet.GenericServlet.init(GenericServlet.java:240)
    at weblogic.jaxrs.server.portable.servlet.ServletContainer.init(ServletContainer.java:121)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:337)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:288)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
    at weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:98)
    at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:86)
    at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:71)
    at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:57)
    at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:31)
    at weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:656)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:600)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1974)
    at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1951)
    at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1841)
    at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2871)
    at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661)
    at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:823)
    at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
    at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
    at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)

在我的项目中,我没有明确地引用Jersey,但我使用的是jax rs,它正在寻找Jersey。我机器中的weblogic服务器有Jersey JAR,但客户端机器中的weblogic没有Jersey JAR。我试着在我的pom中添加以下罐子。xml:

<!--  https://mvnrepository.com/artifact/org.glassfish.jersey.bundles/jaxrs-ri -->
     <dependency>
            <groupId>org.glassfish.jersey.bundles</groupId>
            <artifactId>jaxrs-ri</artifactId>
            <version>2.25.1</version>
        </dependency>   
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-api</artifactId>
            <version>2.5.0-b32</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-locator</artifactId>
            <version>2.5.0-b32</version>
        </dependency> 

        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-utils</artifactId>
            <version>2.5.0-b32</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.glassfish.hk2/hk2-inhabitant-generator -->
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-inhabitant-generator</artifactId>
            <version>2.5.0-b19</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
        <!-- https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject -->
        <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.javax-inject</artifactId>
            <version>1_2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.25.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.bundles.repackaged/jersey-guava -->
        <dependency>
            <groupId>org.glassfish.jersey.bundles.repackaged</groupId>
            <artifactId>jersey-guava</artifactId>
            <version>2.25</version>
        </dependency>

然而,我无法部署应用程序没有任何错误。我现在得到了一个不同的错误。

java.lang.IllegalStateExcture:未提供生成器,也没有注册默认生成器

请在spring配置文件中找到我的jax-rs配置。

<jaxrs:server id="restService" address="/rest">
        <jaxrs:serviceBeans>
            <ref bean="userService" />
            <ref bean="billingService" />
        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean='jsonProvider' />
        </jaxrs:providers>
        <jaxrs:inInterceptors>
            <bean class="com.brokerws.interceptor.WSLoggingRequestInterceptor" />
        </jaxrs:inInterceptors>
        <jaxrs:outInterceptors>
            <bean class="com.brokerws.interceptor.WSLoggingResponseInterceptor" />
        </jaxrs:outInterceptors>
    </jaxrs:server>

请在下面找到我的web.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="true" version="3.0">
    <display-name>SuppApp</display-name>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/app-beans.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>CXFServlet</servlet-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-pattern>/services/*</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>health-check</servlet-name>
        <servlet-class>com.suddenlink.util.HealthCheckServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>health-check</servlet-name>
        <url-pattern>/healthCheck</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>Logback-MDC-Filter</filter-name>
        <filter-class>com.suddenlink.traceability.filter.HttpHeaderServletFilter</filter-class>
        <init-param>
            <param-name>application_name</param-name>
            <param-value>broker-ws</param-value>
        </init-param>
        <init-param>
            <param-name>application_type</param-name>
            <param-value>ws</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Logback-MDC-Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

有人能告诉我我在这里错过了什么吗?我尝试了互联网上给出的各种解决方案,但没有一个对我有效。

共有1个答案

江飞章
2023-03-14

终于找到了问题的根本原因。这是SpringWebApp版本,它使weblogic服务器寻找jersey依赖性。我将webapp版本从3.0更改为2.5,错误消失了。希望这能帮助那些遇到这个问题的人,因为这花了将近两天的时间才弄清楚到底发生了什么。

 类似资料:
  • 我正在尝试将一个简单的SpringBoot应用程序转换为部署在WebLogic中。它在buildin TomCat服务器上运行良好。然后对其进行更改并创建一个新的war文件。当我尝试部署war文件时,我得到这个错误。 web.xml的Servlet初始值设定项 application.java文件

  • 我有一个react本机应用程序,它使用与。NET Core2.1通信的signalR。 套接字连接没有任何错误。一切都很好。但是服务器不能响应客户端的ping消息,并返回504给客户端。当返回504时,客户端的连接关闭。在hubconnection.onclose()处理。然后客户端需要重新连接。 proxy_read_timeout可以设置为高毫秒。但很乱。 所以我不能在客户机上有效地使用kee

  • 我尝试在weblogic服务器上部署使用Spring apache cxf的应用程序。我一直收到这条错误消息: javax。servlet。ServletException:Servlet类:org。阿帕奇。cxf。运输servlet。CXFServlet’不实现javax。servlet。weblogic上的Servlet。servlet。内部的StubSecurityHelper$Servle

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 您好,我正在尝试从计算机中的本地客户端连接我的服务器。我有一个远程服务器正在运行。。当我从Netbeans运行代码时,一切都正常。。。当我从CMD尝试时,我得到了这个错误 Java语言com上的lang.NullPointerException。太阳企业命名。实施。SerialContext。com上的getORB(SerialContext.java:347)。太阳企业命名。实施。SerialC

  • 问题内容: 我正在构建一个小型聊天应用程序,其中客户端A希望通过服务器B将某些东西发送到客户端C。首先,这是解决问题的正确方法吗?我能够向服务器发送数据或从服务器接收数据,但仅限于客户端。例如,如果客户端A向服务器B发送数据而客户端C向服务器B发送数据,则我可以将数据发送回服务器A和C就像回显服务器一样。但是我想要的是将来自客户端A的数据通过服务器B转发到客户端C。 以下是服务器代码: 客户端代码