0

ファイル ejb3-interceptors-aop.xml を使用して、(Jboss にデプロイされた) MDB の注釈をオーバーライドしようとしています。

注釈の形式は次のとおりです。

@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>

これは字句エラーをスローします: Encountered: "+" , after : ""

どうすればこれを回避できますか?

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 に答える