WebLogic 12c-SpringBoot-java.io.FileNotFoundException:无法打开ServletContext资源

时间:2018-11-13 08:52:25

标签: spring spring-boot weblogic weblogic12c

我正在尝试将SpringBoot项目部署到Weblogic 12c上。根据{{​​3}},我编辑了SpringBootApplication类以实现WebApplicationInitializer接口。

我从POM中删除了以下行

   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring.boot.dependency.version}</version>
    <executions>
     <execution>
      <goals>
       <goal>repackage</goal>
      </goals>
     </execution>
    </executions>
   </plugin>

因为不需要重新打包为可执行存档。

我在下面添加了

   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.2</version>
    <configuration>
      <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
  </plugin>

因为我想将应用程序打包为WAR文件,并且没有web.xml(我使用基于注释的配置),所以我不希望打包失败。

此外,我在下面添加了将包装设置为WAR:

<packaging>war</packaging>

到目前为止,一切都很好。我 nvn clean install ,我的WAR软件包已准备就绪,所有依赖项都作为Web应用程序的WAR存档内的JAR文件存在。

当我尝试部署该战争文件时,出现此错误:

java.io.FileNotFoundException:无法打开ServletContext资源[/myfile.properties] 无法打开ServletContext资源[/myfile.properties]

我检查所提到的属性文件是否在软件包中,并且在WAR文件中的JAR之一中。

这是JAR文件的结构:

META-INF
com
myfile.properties

因此,属性文件符合预期,位于JAR归档文件的根目录中。

在该JAR归档文件中,其中一个类正尝试使用 @PropertySource 批注来加载属性文件,如下所示:

@Configuration
@PropertySource("myfile.properties")
public class MyConfigClassForThisApp{

}

在另一个类中,值的读取方式如下:

@Value("${some.key}")
private String keyValue;

我了解WebLogic类路径与Tomcat类路径不同。因此,我认为我需要配置WebLogic类路径才能查看此属性文件。我怎样才能做到这一点?

或者也许我应该更改引用该属性文件的方式,而不是使用@PropertySource批注,而应该执行以下操作:

this.getClass().getClassLoader().getResourceAsStream()

并将属性文件包装在this spring article类中,然后读取值?

请注意,我将尽可能避免更改代码。 什么是使WebLogic服务器看到我的配置类且代码/配置的修改尽可能少的最佳方法?另外,我的WAR内部还有其他JAR,其中许多具有这样的属性文件。我想出的任何解决方案都会多次应用于其他JAR中的其他属性文件。

注意:我正在AdminServer的测试环境中部署应用程序。

注意:我按照建议的Properties将属性文件放置在%WEBLOGIC_HOME%/ user_projects / domains / MYDOMAIN中,此操作无效。

0 个答案:

没有答案