我在一个类上有一个注释@SecurityDomain("cjm")。根据我部署应用程序的环境,我需要配置不同的安全域。所以我的想法是使用过滤:@SecurityDomain("${project.name}")。
然而,使用我在SO上找到的示例,什么都不起作用。我根本不能替换这个属性
奇怪的是,我还没有找到一个很好的解决方案。也许我用了错误的术语进行搜索。或者,奇怪的是,这(仍然)是不可能的。
maven模板插件是不够的,它没有包含过滤器,所以我有很多重复的类编译错误。
该项目是一个Java EE项目,使用keycloak saml安全适配器在Red Hat EAP7上运行。@SecurityDomain是将安全上下文从web上下文传播到ejb上下文所必需的。在使用@RolesAllowed时,这是必需的。我向keycloak团队记录了一个增强请求,以自动传播安全上下文,就像在默认场景中所做的那样。
发布于 2021-09-29 15:05:28
你可以使用maven插件"templating-maven- plugin“。
在你的pom.xml中声明它,添加调用目标"filter-sources“:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>templating-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>filter-src</id>
<goals>
<goal>filter-sources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>public interface MyMavenBuildConstant {
String PROJECT_NAME = "${project.name}";
}运行maven构建(例如来创建生成的java源/target/generated-sources/java-templates/MyMavenBuildConstant.java.。
现在可以在代码中使用java常量:
@SecurityDomain(MyMavenBuildConstant.PROJECT_NAME)发布于 2017-10-19 21:06:06
例如,您可以在任何Maven构建阶段设置环境变量,这取决于您的配置文件。然后使用System.environment()在运行时阶段使用它们。
就现代Docker容器的交付方式而言,它也应该是一种更可取的方式
https://stackoverflow.com/questions/46827182
复制相似问题