0

我正在尝试使用文件 ejb3-interceptors-aop.xml 覆盖 MDB(部署在 Jboss 上)上的注释

注释的形式为:

@MessageDriven(mappedName = "jms/someName", activationConfig = {
... ,
@ActivationConfigProperty(propertyName = "messageSelector", propertyValue = ConstantStrings.CONST1
+ " = '"
+ ConstantStrings.CONST2
+ "'"
)})

但是,当我在 XML 文件中使用它时:

<annotation expr="class(com.pkg.ClassName)">
     @javax.ejb.MessageDriven(mappedName = "jms/someName", activationConfig = { ... , @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = com.my.pkg.ConstantStrings.CONST1 + " = '" + com.my.pkg.ConstantStrings.CONST2 + "'")})
</annotation>

它抛出一个词法错误:遇到:“+”,之后:“”

知道如何解决这个问题吗?

4

1 回答 1

1

您缺少右括号。

@MessageDriven(
    mappedName = "jms/someName",
    activationConfig = {
        ... ,
        @ActivationConfigProperty(
            propertyName = "messageSelector",
            propertyValue = ConstantStrings.CONST1 
                            + " = '"
                            + ConstantStrings.CONST2
                            + "'"
        )
    }
) // this one

如果这只是糟糕的复制和粘贴并且错误仍然存​​在,请尝试在 xml 中使用单个静态变量而不是串联。改为在 java 类中使用串联。

public static final Sting MESSAGE_SELECTOR = CONST1 + " = '" + CONST2 + "'";

 

<annotation expr="class(com.pkg.ClassName)">
    @javax.ejb.MessageDriven(mappedName = "jms/someName", activationConfig = { ... , 
        @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = com.my.pkg.ConstantStrings.MESSAGE_SELECTOR)
    })
</annotation>
于 2011-09-05T08:03:09.253 回答