2015-11-23 3 views
0

Отказ от ответственности: Я новичок в Java EE и до недавнего времени не работал с EJB, поэтому простите меня, если я неправильно использую некоторые термины или выражения.Почему EJB дают мне nullpointerexception при использовании с JavaFX?

Я работаю над простым приложением с использованием Java EE и EJB. Мне нужно получить доступ к EJB во время работы приложения. Если я правильно понял, вы объявляете бобы, как это:

@EJB 
private ProgressBeanRemote progressBean; 

Однако, если я пытаюсь получить доступ к компоненту внутри приложения, как это:

System.out.println(progressBean.getSomeValue()); 

Я получаю следующее сообщение об ошибке:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException 
at project.name.TestClass.java:10 

Теперь мне кажется, что JVM видит progressBean как поле без экземпляра и, следовательно, генерирует исключение nullpointerexception. Однако невозможно (и не имеет смысла) создавать новый объект bean-компонента, поскольку он действительно удаленный. Помимо этого у меня не так много. Итак, мой вопрос: Как я могу получить доступ к bean-компонентам внутри запущенного приложения JavaFX?

ПРИМЕЧАНИЕ. Я тестировал свое приложение как обычную программу Java (без GUI), а затем он работает. Также я использую JDK 1.8 и Java EE 7.

EDIT: Я знаю, что такое NullPointerException, я просто не понимаю, почему удаленный доступ не распознается, когда я пытаюсь получить к нему доступ из JavaFX.

+2

Возможный дубликат [Что такое Исключение нулевого указателя и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) –

+2

Я не согласен с дублирующимся звонком. Именно поэтому EJB загружаются неправильно из приложения JavaFX. –

ответ

1

EJB необходимо запускать в контейнере или окружении Application Client. Для вашего сценария это похоже, что проект Application Client - это то, что вам нужно. Как правило, этот клиент специфичен для сервера приложений, поскольку транспорты обычно специфичны для поставщиков, хотя код должен быть одинаковым для любого сервера приложений, соответствующего стандартам.

Моей рекомендацией является использование более стандартного API, такого как SOAP, с использованием JAX-WS или REST API, такого как JAX-RS, который вы можете получить реализаций, которые не требуют каких-либо конкретных поставщиков.

Лично я бы рекомендовал JAX-WS, потому что он более «строгий» с тем, что вы можете отправлять и получать.

+0

Спасибо за ответ, я прочитаю статью, которую вы мне прислали, и повторите попытку. – Sifu

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