簡體   English   中英

通過spring-boot和Weblogic公開SOAP Webservice

[英]Exposing SOAP Webservice with spring-boot and Weblogic

我正在編寫一個我想部署在Weblogic 12C中的spring-boot應用程序。 該應用程序公開了SOAP Web服務。 當以獨立模式運行應用程序時(spring-boot通過使用嵌入式tomcat運行它),一切正常,我可以通過以下方式訪問wsdl:

http://localhost:8081/ws/springbootwstest.wsdl

但是,如果我在Weblogic中部署application-war-file,則在成功部署應用程序本身時,Web服務將不可用。

我無法訪問wsdl。 我已經按照http://docs.spring.io/spring-boot/docs/1.2.2.BUILD-SNAPSHOT/reference/htmlsingle/#howto-weblogic上的說明進行操作,但結果仍然相同。

所有資源都可以在這里找到: https : //github.com/iljahell/springbootwstest.git

Java版本“ 1.7.0_67”

春季引導1.2.0.RELEASE

Weblogic 12.1.3.0.0

在對weblogic 12c感到沮喪之后,我今天解決了這個問題。 Weblogic仍然需要您像這樣在web.xml中定義spring ws消息調度程序servlet。 確保也將spring boot legacy依賴項添加到pom中。

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-legacy</artifactId>
        <version>1.0.2.RELEASE</version>
    </dependency>

另外,請確保從spring boot ws依賴項中排除嵌入式tomcat:

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-websocket</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

然后

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>au.gov.qld.ambulance.mtaworkflow.webservices.SpringWsApplication</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
</listener>

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

</web-app>

然后添加一個與您的servlet名稱匹配的空servlet.xml。 彈簧-WS-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

最后,添加帶有以下內容的weblogic.xml:

<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-
web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd 
http://xmlns.oracle.com/weblogic/weblogic-web-app 
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:weblogic-version>12.1.1</wls:weblogic-version>
<wls:context-root>mtaworkflow</wls:context-root>
<wls:container-descriptor>
    <wls:prefer-application-packages>
        <wls:package-name>org.slf4j.*</wls:package-name>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>javax.websocket.*</wls:package-name>
        <wls:package-name>javax.websocket.server.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>
</wls:weblogic-web-app>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM