Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于环境属性启用CDI装饰器_Java_Jakarta Ee_Jboss_Cdi - Fatal编程技术网

Java 基于环境属性启用CDI装饰器

Java 基于环境属性启用CDI装饰器,java,jakarta-ee,jboss,cdi,Java,Jakarta Ee,Jboss,Cdi,我知道可以在“beans.xml”文件中配置Decorators,该文件嵌入到要部署的EAR中 问题是我对所有环境使用相同的EAR,并且属性集或特定配置存储在包外的某个文件夹中 我需要确定是否将使用Decorator“externalbean.xml”或类似的机制(EAR之外的东西) 有什么想法吗 非常感谢。通常情况下,这不起作用-标准的启用方法是针对每个归档方法的beans.xml,以及针对全局启用的@Priority。没有什么比得上“externalbean.xml” 尽管有一种方法可以通过

我知道可以在“beans.xml”文件中配置Decorators,该文件嵌入到要部署的EAR中

问题是我对所有环境使用相同的EAR,并且属性集或特定配置存储在包外的某个文件夹中

我需要确定是否将使用Decorator“externalbean.xml”或类似的机制(EAR之外的东西)

有什么想法吗


非常感谢。

通常情况下,这不起作用-标准的启用方法是针对每个归档方法的
beans.xml
,以及针对全局启用的
@Priority
。没有什么比得上“externalbean.xml”

尽管有一种方法可以通过扩展来启用它。您需要设置一个分机并观察。从那里你可以
使用
public List通常情况下,这不起作用-标准的启用方法是
beans.xml
用于每个归档方法,而
@Priority
用于全局启用。没有什么比得上“externalbean.xml”

尽管有一种方法可以通过扩展来启用它。您需要设置一个分机并观察。从那里你可以
利用
public List另一个可以使用的场景是利用构建时包含和处理。
如果您事先知道哪些属性在构建时激活特定的装饰器,那么您可以使用maven资源和系统属性来定义要过滤的其他资源,因此:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompant</groupId>
    <artifactId>my-project-id</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <some.kind.of.selector.properties>$basedir}/src/main/resources/development</some.kind.of.selector.properties>
    </properties>

    <build>
        <resources>
            <resource>
                <directory>${some.kind.of.selector.properties}</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>test</id>
            <properties>
                <some.kind.of.selector.properties>$basedir}/src/main/resources/test</some.kind.of.selector.properties>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <some.kind.of.selector.properties>$basedir}/src/main/resources/prod</some.kind.of.selector.properties>
            </properties>
        </profile>
    </profiles>
</project>

4.0.0
com.mycompant
我的项目id
1.0.0-SNAPSHOT
战争
$basedir}/src/main/resources/development
${some.kind.of.selector.properties}
src/main/resources
测试
$basedir}/src/main/resources/test
戳
$basedir}/src/main/resources/prod
在构建时,您可以为每个环境指定不同的
beans.xml

mvn清洁安装-Pprod

甚至直接指定属性

mvn clean install-Dsome.kind.of.selector.properties=/path/to/additional/resources


您可以使用的另一个场景是利用构建时包含和处理。 如果您事先知道哪些属性在构建时激活特定的装饰器,那么您可以使用maven资源和系统属性来定义要过滤的其他资源,因此:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompant</groupId>
    <artifactId>my-project-id</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <some.kind.of.selector.properties>$basedir}/src/main/resources/development</some.kind.of.selector.properties>
    </properties>

    <build>
        <resources>
            <resource>
                <directory>${some.kind.of.selector.properties}</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>test</id>
            <properties>
                <some.kind.of.selector.properties>$basedir}/src/main/resources/test</some.kind.of.selector.properties>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <some.kind.of.selector.properties>$basedir}/src/main/resources/prod</some.kind.of.selector.properties>
            </properties>
        </profile>
    </profiles>
</project>

4.0.0
com.mycompant
我的项目id
1.0.0-SNAPSHOT
战争
$basedir}/src/main/resources/development
${some.kind.of.selector.properties}
src/main/resources
测试
$basedir}/src/main/resources/test
戳
$basedir}/src/main/resources/prod
在构建时,您可以为每个环境指定不同的
beans.xml

mvn清洁安装-Pprod

甚至直接指定属性

mvn clean install-Dsome.kind.of.selector.properties=/path/to/additional/resources