Weblogic上的Spring-ws:MessageDispatcherServlet没有默认构造函数

时间:2014-02-25 06:37:03

标签: weblogic-10.x spring-ws

我正在尝试部署包含spring webservices的war。但我得到一个奇怪的错误:

following error weblogic.application.ModuleException: [HTTP:101216]Servlet: "spring-ws" failed to preload on startup in Web application: "myApp-1.0.0-SNAPSHOT.war".
javax.servlet.ServletException: Servlet class: 'org.springframework.ws.transport.http.MessageDispatcherServlet' doesn't have a default constructor
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:261)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)
    at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
    at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1976)
    at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1950)

我尝试在端点类中提供默认构造函数。

以下是我遵循的步骤:

  1. web.xml有此条目:

    <servlet>
        <servlet-name>spring-ws</servlet-name>
        <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
        <init-param>
            <param-name>transformWsdlLocations</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-ws</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    
  2. web-inf文件夹中包含spring-ws-servlet.xml文件,其中包含组件扫描条目,启用注释和wsdl条目,如下所示:

    <sws:static-wsdl id="MyService" 
         location="classpath:/services/myService/1.0/MyService.wsdl" />
    
  3. 如果我在这里遗漏任何东西,请告诉我。

    谢谢。

1 个答案:

答案 0 :(得分:0)

可能是用于初始化Spring类的jar文件和预期使用的jar文件存在冲突。

要强制Weblogic容器使用与war文件捆绑在一起的jar文件,您必须使用以下内容指定 WEB-INF / weblogic.xml 文件

<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>

请参阅this thread