我正在开发一个使用SpringBoot 1.4.3-RELEASE开发的项目。
根据公司内部文件,它要求我们在WEB-INF / web.xml中为每个应用程序定义一个。示例如下:
<resource-ref>
<res-ref-name>connectivityConfiguration</res-ref-name>
<res-type>com.hide-my-company-name.ConnectivityConfiguration</res-type>
</resource-ref>
然后使用JNDI查找来获取某个对象。但是我没有WEB-INF / web.xml。
因此,我在本地tomcat context.xml中定义了资源,而不是WEB-INF / web.xml。
<Context>
<Resource name="connectivityConfiguration"
type="com.hide-my-company-name.ConnectivityConfiguration" />
</Context>
有效。但是,仅在我的本地开发环境中。 因为我无法在部署后更改'context.xml'或'server.xml'。
问题: 有没有其他方法可以使用SpringBoot定义相同的资源?例如。通过。 Java代码,还是通过application.properties?
答案 0 :(得分:0)
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(WebApplication.class, args);
}
@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatEmbeddedServletContainer(tomcat);
}
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("connectivityConfiguration");
resource.setType("com.hide-my-company-name.ConnectivityConfiguration");
context.getNamingResources().addResource(resource);
}
};
}
}