2012-12-22 7 views
9

Если у меня есть статические поля без гражданства фасоли:Статические поля в сеансных

@Stateless 
@Local(SomeClass.class) 
public class AccountBean implements SomeClass{ 

    private static final int STATIC_FIELD = 0; 

    public AccountBean() {} 
} 

Будет ли значение STATIC_FIELD быть общими во всех AccountBean случаях, как в базовых классах?

EDIT Отметить эту должность как final как предложено ниже.

+3

Вы можете использовать их как константы ('public/private static final type'). Но вы не должны использовать их для совместного использования состояния. Он может работать в 1 среде JVM, но как только вы развертываете приложение в кластере, состояние не будет использоваться для нескольких JVM (различная статическая переменная classloader =>). –

+0

@Jiri благодарю вас отметить это соображение –

ответ

12

Да, это будет общий, но только внутри единой JVM, конечно. И его капитализация указывает, что она является постоянной, и поэтому должна быть final.

Если он не является постоянным, он пахнет, не соблюдает соглашения о назначении Java и нарушает спецификацию EJB.

+0

Спасибо, это все, что я хотел знать :) Да, я забыл добавить слово 'final', я не копировал/вставлял, я знаю это соглашение –

+0

+1 для указания того, что статические поля в фазах без гражданства должны быть окончательные. – Perception

Смежные вопросы