将示例SpringBoot应用程序部署到Weblogic12C后,我无法访问它。使用springBoot嵌入式Tomcat服务器,它可以正常工作。
重现步骤:按照以下步骤获取springBoot“入门”应用程序代码:https ://spring.io/guides/gs/spring- boot/
此时,您可以通过运行gradle“ bootRun”任务(在嵌入式Tomcat服务器中启动该应用程序)来验证一切正常。Tomcat启动后,浏览至localhost:8080 /,然后看到“ Spring Boot的问候!”。
Java版本“ 1.7.0_45” Java™SE运行时环境(内部版本1.7.0_45-b18)Java HotSpot(TM)服务器VM(内部版本24.45-b08,混合模式)
* 在控制台中时,部署war文件: * 点击“部署” * 点击“安装” * 浏览到您的“ gs-spring-boot \ complete \ build \ libs”目录 * 选择complete.war旁边的单选按钮,然后单击下一步 * 选择“作为应用程序安装”,然后单击下一步 * 将所有选项保留为[仅DD,使用默认设置,使用相同的可访问性],然后单击下一步 * 点击完成
此时,您将看到该应用程序已正确部署:-再次单击“部署”,并看到列出了您的“完整” springBoot应用程序并且处于活动状态- 单击“完整”并在此页面上注意到:“上下文根:/完成”。注意:weblogic文档说,如果在weblogic.xml中没有定义上下文根,则它将使用war文件的名称(减去.war)
如果您尝试在localhost:7001 / complete处访问springBoot应用程序,则会收到403 !!!!
Error 403--Forbidden From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.4.4 403 Forbidden The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated. If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, it SHOULD describe the reason for the refusal in the entity. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.
好的,让我们做最后的更改(我在这里钓鱼,也许weblogic确实想要一个weblogic.xml):
<?xml version="1.0" encoding="UTF-8"?> <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>testApp</wls:context-root> </wls:weblogic-web-app>
现在回到您的weblogic控制台(localhost:7001 / console)
转到“网络应用程序”,然后选中“完成”旁边的复选框,然后点击“删除”
403仍然在那里。所以:
在上面的示例代码中,打开文件gs-spring-boot \ complete \ src \ main \ java \ hello \ HelloController.java并替换:
@RequestMapping("/")
有了这个:
@RequestMapping("pierre.htm")
现在,如果浏览至(请记住weblogic.xml,请将context-root定义为/ testApp):
而且,如果您尝试使用“ gradle bootrun”运行tomcat,则可以很好地进行此操作:localhost:8080 / pierre.htm(您将获得“ SpringBoot的问候!”)。
因此,这产生了以下提示:
这就是我被困住的地方…谁能想到我缺少的JavaConfig才能在Weblogic上正常工作?任何帮助,不胜感激。谢谢!!
如果有人来这里,要使其比阅读下面的所有评论更简单,请按以下步骤进行操作:
public class WebInitializer extends SpringBootServletInitializer {
对此:
public class WebInitializer extends SpringBootServletInitializer implements WebApplicationInitializer {
<?xml version="1.0" encoding="UTF-8"?> <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>helloApp</wls:context-root> <wls:container-descriptor> <wls:prefer-application-packages> <wls:package-name>org.slf4j.*</wls:package-name> </wls:prefer-application-packages> </wls:container-descriptor> </wls:weblogic-web-app>
* dle战 * 部署到Weblogic12C * 它现在应该可以工作了:)非常感谢Dave Syer和Evgeni!
从SpringBoot示例应用程序开始,然后从此处git“完整”解决方案:spring.io/guides/gs/convert-jar-to-war/
受保护的SpringApplicationBuilder configure(SpringApplicationBuilder application){返回应用程序;}
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); }
注意:这里有一个类似的问题: 在Weblogic中部署Spring Boot应用程序 …但是另一个问题与部署有关,这有点模糊(部署本身对我来说很好)
Weblogic的问题在于,它查找 直接 实现WebApplicationInitializer以加载上下文的类。您可能会扩展SpringBootServletInitializer。尝试创建一个实现WebApplicationInitializer并复制其中内容的SpringBootServletInitializer类(据我所记得,您还需要从spring源复制一个包级别的类,以便您的自定义类可以看到它)。
WebApplicationInitializer
SpringBootServletInitializer