我正在尝试将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>
到目前为止,一切都很好。我
当我尝试部署该战争文件时,出现此错误:
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中,此操作无效。