运行客户端Main.java时创建ejb对象的异常

时间:2013-10-29 12:30:27

标签: java jsp java-ee netbeans

这个主要是在同一个项目中调用一个session-bean,将消息发送到一个单独项目中的消息驱动bean。

另一个项目已完全部署并正常运行。

对于此项目,可以部署session-bean ejb。问题是当我尝试运行我的客户端主代码时,netbeans可以部署代码但是在运行它时给我(警告:创建ejb对象的异常:[SSSbean])。我根本不明白为什么无法创建ejb对象。有什么想法吗?

会话Bean如下:

public class SSSbean implements SSSbeanRemote {

@Resource(name = "jms/Topic")
private static Topic topic;
@Resource(name = "jms/TopicConnectionFactory")
private static ConnectionFactory topicFactory;

public SSSbean () {}

@Override
public void createMessage(String messageData) throws JMSException {
    Connection topicConnection = null;
    Session session = null;
    MessageProducer producer = null;

    topicConnection = topicFactory.createConnection();
    session = topicConnection.createSession(true,0);
    topicConnection.start();
    producer = session.createProducer(topic);

    TextMessage tm = session.createTextMessage();
    tm.setText(messageData);
    producer.send(tm);
}

@Override
@Remove
public void remove() {
    System.out.println("SSSBean:remove()");
}

}

主要在下面:

public class Main {
    @EJB
    private static SSSbeanRemote ss;

    public static void main(String[] args) {
        // TODO code application logic here
        Main client = new Main();
        client.bX();
        ss.remove();
    }

    private void bX() {
        System.out.println("Main: Client started... ");

        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("Enter Suggestion: ");
            String suggestion = sc.nextLine();
            try{
                ss.createMessage(suggestion);
                continue;
            } catch (JMSException j) {
                System.out.println("Error: "+ j.toString());
            }
        } 
    }
}

2 个答案:

答案 0 :(得分:0)

您正在尝试在不由Container管理的代码中注入EJB。

执行客户端代码时,main()方法只会忽略@EJB注释。知道@EJB意味着什么以及如何注入Bean的唯一一个是Container。尝试在Aplication Client Container

中执行客户端代码

答案 1 :(得分:0)

如果要从不受容器管理的应用程序检索EJB bean,可以从InitialContext中检索它。

也许这会让你更接近:https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI