Spring Boot应用程序已部署到Weblogic 12c且无法启动

v7pvogib  于 2022-11-29  发布在  Spring
关注(0)|答案(3)|浏览(423)

我尝试创建一个 Spring 启动可部署的war文件,然后将其部署到weblogic 12 c。应用程序启动失败,出现异常:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
ERROR SpringApplication - Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'graphQLServletRegistrationBean' defined in class path resource
...

嵌套异常为:

java.lang.IllegalStateException: No *.graphqls files found on classpath.  Please add a graphql schema to the classpath or add a SchemaParser bean to your application context.

实际上,上面提到的文件*.graphqls存在于WEB-INF/classes/文件夹下的war中,如果将war文件解压到本地磁盘,以展开的格式重新部署app,我们就不会看到这个异常。
我错过什么了吗?

  • 谢谢-谢谢
dtcbnfnu

dtcbnfnu1#

我在这个漏洞中浪费了8个小时,拼凑我从其他面临同样问题的人那里得到的各种线索。

    • 解决方案1是在Weblogic中将您的应用程序部署为展开的WAR。我假设您已经准备好了在Weblogic上部署的Spring Boot应用程序,关于此主题有几个技巧,但它们可以在Internet上获得(排除嵌入式Tomcat并在POM.XML中指定WAR打包,使用weblogic.xml和servlet xml创建webapp/WEB-INF文件夹)。

现在在服务器上创建一个文件夹,例如/home/oracle/wars/myapp,然后将WAR的解压缩内容复制到该文件夹中。
然后转到"部署-安装",导航到/home/oracle/wars/并从单选按钮列表中选择myapp文件夹,只需按照默认步骤进行部署。
请注意,您需要一个普通的web.xml文件以及weblogic.xml,否则Weblogic不会将其视为"Web应用程序"**
作为展开的WAR进行部署是一种避免创建_wl_cls_gen.jar的解决方法,而创建_wl_cls_gen.jar正是此问题的根源。

    • 解决方案2默认情况下,查找位置设置为"classpath:graphql/* */",PathMatchingResourcePatternResolver不会选择该位置。请在应用程序的yaml或属性中进行设置:
spring: graphql: schema: locations: classpath*:graphql/**/

最后,对于这个特定的错误,/*. graphqls文件在部署到weblogic时找不到,下面的任何操作都不起作用,我提到它,这样你就不会浪费时间了:
1.在POM中添加资源标签
源代码/main/资源
/.属性**/.图形

  1. Adding in application.properties graphql.tools.schema-location-pattern=**/*.graphqls
  2. Adding in application.properties graphql.servlet.exception-handlers-enabled=true
    1.更新版本的GraphQL库,我尝试了它,从graphql 7. 0. 1开始,所有东西都失败了,出现了这个错误
    1.在POM中添加Spring启动启动器父项
2nc8po8w

2nc8po8w2#

在没有看到代码或知道spring-boot版本的情况下,很难真正诊断问题。为了让我的spring-boot应用程序在WebLogic上运行,这里和那里都做了一些小的修改。我认为应该包含weblogic.xml和一些依赖项
主要的一个是向我的应用程序类添加implements WebApplicationInitializer,如下所示。

@SpringBootApplication
public class Application extends SpringBootServletInitializer
    implements
    WebApplicationInitializer {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

}

看起来有一些其他的问题与你的类似,也许这些可以帮助你。看起来你可能有问题的Spring启动与其他Spring(但不是Spring启动)的依赖关系。这是不可能的,因为我不知道你的pom文件或应用程序类文件看起来像什么。
One
Two
Three
Four

4urapxun

4urapxun3#

我已经找出了这个问题的原因。在weblogic中部署war文件时有点奇怪。它创建了一个内部的_wl_cls_gen. jar文件来打包/WEB-INF/classes文件夹的所有文件。
但是应用程序仍然在类似于/j2ee/wl 12/cp_domain/servers/cp_msp01/tmp/_WL_user/cpapps-graphql-results/g4 qyhf/war/WEB-INF/classes/**/*.graphqls的匹配目录中查找资源,并且没有找到匹配的资源。

相关问题