我试图在WebSphere Liberty Core 18.0.0.2中部署我的springboot应用程序。我在服务器中有两个xml文件-server.xml
和application.xml
。 application.xml
包含以下特定于应用程序的配置。
<library description="Oracle JDBC Library" id="OracleJDBCLib" name="OracleJDBCLib">
<fileset dir="${shared.resource.dir}/jdbc/oracle" includes="*.jar"/>
</library>
<jdbcDriver id="OracleProvider" libraryRef="OracleJDBCLib"/>
<springBootApplication contextRoot="/provider" id="provider" location="provider-exec.war" type="war">
<classloader commonLibraryRef="OracleJDBCLib" />
</springBootApplication>
它被包含在server.xml中
<include location="${server.output.dir}/application.xml" optional="true" onConflict="MERGE"/>
问题是springboot正在使用此application.xml
进行bean初始化,这不应该发生。据我了解,springboot战争是独立存在的,它不会寻找特定于容器的配置。
为了进行验证,我已将application.xml
重命名为springbootapp.xml
,并且可以正常工作。应用运行正常。
请告诉我是否需要进行任何配置更改以将springboot限制为不查找容器特定的配置?
答案 0 :(得分:2)
如Spring Boot参考指南(Externalized Configuration)中所述,它将查找名为application.properties
的文件。但是,他们没有告诉您的是,除了application.properties
之外,它还可能是application.xml
。
可以从java.util.Properties
或.properties
文件中加载.xml
对象。 Spring(以及Spring Boot)对此具有隐式支持。
因此,简而言之,配置加载将检测到application.properties
,application.yml
以及 application.xml
。
要解决此问题,您可以做两件事
META-INF
中。 答案 1 :(得分:1)
尽管从技术上讲不是一个答案,但是请注意,您可以通过在{的server.contextPath
内声明Spring Boot应用程序属性server.servlet.contextPath
或<applicationArgument>
来更改Spring Boot应用程序的根上下文路径。 {1}}。假设使用Spring Boot 2.0应用程序,请尝试此操作。
<springBootApplication>