Определение EJB 3.1 JSR

В EJB 3.1 JSR это говорится в разделе 16.3.4.

Контейнер должен гарантировать, что экземпляры корпоративного компонента имеют доступ только для чтения к своим переменным среды. Контейнер должен генерировать исключение javax.naming.OperationNotSupportedException из всех методов интерфейса javax.naming.Context, которые изменяют контекст именования среды и его подконтексты.

Вопрос 1. Согласно JSR, незаконно добавлять / редактировать объект, скажем, строку «hello», в JNDI из метода bean-компонента без сохранения состояния?

Таким образом, следующий код должен потерпеть неудачу, если это правда, но при тестировании в моем jboss 6 он работает нормально.

public void RebindVars() throws NamingException{
    Context ctx = new InitialContext();
    String testString = (String) ctx.lookup("java:comp/env/testString");
    String newString = "helloRebindFromJndi"; //Assume that this is a valid call.
    if (!testString.equals(newString)) {
        ctx.rebind("java:comp/env/testString", newString);
    }
}

Вопрос 2: поскольку он работает в моем jboss, это реализация jboss, которая позволяет больше, чем требуется, или я полностью неправильно понял JSR?

Я прохожу сертификацию EJB, и поэтому я спрашиваю об этом, поэтому не нужно комментировать, почему я когда-либо делал это =)


person Marthin    schedule 10.10.2012    source источник


Ответы (1)


Я верю, что то, что говорится в спецификации EJB, верно. ENC - это пространство имен только для чтения - попробуйте его на JBoss AS 7.1.1, и он не удастся.

Некоторые дополнительные материалы для чтения, которые могут вас заинтересовать:

person Piotr Nowicki    schedule 10.10.2012