Как добавить строки при переопределении аннотаций на MDB с использованием AOP (ejb3-interceptors-aop.xml)? - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь переопределить аннотации на MDB (развернутой в Jboss), используя файл ejb3-interceptors-aop.xml

Аннотация имеет вид:

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

Выдает лексическую ошибку: Обнаружено: "+", после: ""

Есть идеи, как мне обойти это?

1 Ответ

1 голос
/ 05 сентября 2011

Вам не хватает закрывающей скобки.

@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 + "'";

1010 *

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