2014-12-10 3 views
0

Я создаю новый проект EJB с фасолью, которые используются в другом простом проекте. Я использую NetBeans 7.4 с Glassfish 4.0. Вот мой интерфейс и реализация для проекта EJB:Как создать удаленный EJB Bean с помощью Glassfish 4?

DbBeanInt.java

package com.ejb; 

import javax.ejb.Remote; 

@Remote 
public interface DbBeanInt { 
    public void test(String asd); 
} 

DbBean.java

package com.ejb; 

import javax.ejb.*; 

@Stateless(name = "DbBean", mappedName="B") 
@Remote 
public class DbBean implements DbBeanInt{ 

@Override 
public void test(String asd) { 
    System.out.println(asd); 
} 
} 

И вот код, где я зову его. Я включил в эту библиотеку проекта проект EJB.

package bookstoreclient; 

import com.ejb.DbBeanInt; 
import javax.ejb.EJB; 

public class BookStoreClient { 

@EJB 
private static DbBeanInt db; 

public static void main(String[] args) { 
    db.test("Test"); 
} 
} 

Однако, когда я запускаю это приложение, я получаю:

Exception in thread "main" java.lang.NullPointerException 
at bookstoreclient.BookStoreClient.main(BookStoreClient.java:12) 

Есть ли что-то другое, что должно быть включено?

+0

Приложение EJB развернуто на сервере Glassfish, второе - простое приложение java. – Arnold

ответ

1

Интерфейсы DbBean и DbBeanInt выглядят нормально. но класс BookStoreClient неверен.

вы используете @EJB для «введения» прокси-сервера EJB для связи с вашим удаленным EJB. Вы можете вводить только «Управляемые бобы» (а EJB - управляемый компонент, управляемый EJB Container) в «Управляемые бобы». И ваш класс BookStoreClient не является управляемым компонентом, потому что вы начинаете его с метода main().

я сделал Repository на GitHub, чтобы показать вам рабочий пример для Вашего вопроса: https://github.com/StefanHeimberg/stackoverflow-27411885

просто клонировать его и открыть _27411885 с Netbeans.

В этом репозитории вы найдете проект db-ejb с интерфейсом DBService и интерфейсом DBServiceRemote. существует также DBServiceIT с использованием встроенной стеклянной рыбы для тестирования DBService над локальным представлением без интерфейса (@LocalBean).

Проект db-client просто вызывает компонент DBService удаленно. обязательно сначала разверните («Запустить») проект db-ejb с помощью стеклянной рыбы.

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