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

使用spring boot和Weblogic公开SOAP Web服务

广亮
2023-03-14

我正在编写一个spring boot应用程序,我想在Weblogic 12C中部署它。该应用程序公开了一个SOAP Web服务。在独立模式下运行应用程序时(spring boot通过使用嵌入式tomcat运行),一切正常,我可以通过

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

但是,如果我在Weblogic中部署应用程序war文件,当应用程序本身成功部署时,Webservice不可用。

我无法访问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"

Spring靴1.2.0。释放

Weblogic 12.1.3.0.0

共有1个答案

骆利
2023-03-14

在对weblogic 12c感到非常失望之后,我今天解决了这个问题。Weblogic仍然要求您在web中定义spring ws message dispatcher servlet。像这样的xml。确保将spring boot遗留依赖项也添加到pom中。

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

此外,确保将嵌入式tomcat从spring boot ws依赖项中排除:

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

  • 我创建了一个docker镜像(java Web应用程序),创建了一个包含1个主节点和1个工作节点的kubernetes集群,创建了一个部署和一个服务。所有的资源似乎都运行良好,因为我已经通过“kubectl描述资源资源名”进行了检查。最后,我使用了入口来公开集群之外的服务。入口资源似乎工作正常,因为在描述入口对象时没有错误。但是,在从另一台机器访问浏览器上的主机时,我得到了“您的连接不是私有的”错

  • 我正在尝试将基于Rest的Web服务应用程序部署到Weblogic控制台12C上。为此,我使用了Spring Jersey实现和Spring依赖注入 在尝试访问我的服务时,我必须使用Weblogic的/resources/*路径,因为/rest/*不起作用。此外,SpringServlet没有被调用,但Weblogic自己的JAX-RS Jersey实现正在工作。我已经检查过了,在应用程序启动期间

  • weblogic是否通过Jmx公开指标,以便可以使用prometheus进行监控?监视weblogic服务器(线程、数据源…)的最佳解决方案是什么?

  • 什么是port和targetport? 是否为每个代理设置LoadBalancer服务? 这些多个代理是否映射到cloud LB的单个公共IP地址? K8S/Cloud之外的服务如何访问单个代理?通过使用?或者使用?。还有,这里用的是哪个端口?还是? 如何在Kafka Broker的属性中指定此配置?对于k8s集群内部和外部的服务,As端口可能不同。 请帮忙。

  • 我有一个运行Weblogic服务器(运行版本10.3.6)的VM,它有2个节点。我还有一个Tomcat服务器在我的主机上运行,它运行一个SSL web服务,Weblogic服务器必须连接到该服务。我将两个启动参数添加到启动下的“参数”文本区域: