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

Я пытаюсь сделать вызов бину, который не реализует интерфейс. Спасибо за помощь

0 ответов

Другие вопросы по тегам