Ejb3 - доступ к локальным корпоративным компонентам с использованием представления без интерфейса
Я пытаюсь выучить EJB3, я создал проект EJB только с классом bean:
package com;
import javax.ejb.Local;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class MyBean {
public MyBean() {
// TODO Auto-generated constructor stub
}
public String getMessage(){
return "Hello";
};
}
Я развернул этот проект на Jboss 6, а затем создал проект Java (добавив в путь сборки вышеупомянутый ejbProject и Jboss-client.jar для выполнения вызовов RMI).
для тестирования это класс, который я создал:
import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.MyBean;
public class LanceProgram {
// @EJB
//public static MyBean mybean;
public static void main(String[] args) {
Context ctx;
try {
ctx = new InitialContext();
MyBean exampleBean = (MyBean) ctx.lookup("MyBean");
System.out.println(exampleBean.getMessage());
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Обычно, когда я запускаю это, у меня должна быть ссылка на MyBean, но она нулевая, и у меня появляется это сообщение об ошибке (с использованием поиска JNDI):
Exception in thread "main" java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to com.MyBean
at LanceProgram.main(LanceProgram.java:17)
В то время как с EJB-инъекцией у меня есть исключение NullPointerException!
это я мои jndi.properties спецификации файла:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming
Я пытаюсь сделать вызов бину, который не реализует интерфейс. Спасибо за помощь