[英]How to create a Remote EJB Bean using Glassfish 4?
我正在使用在另一個簡單項目中使用的bean創建一個新的EJB項目。 我正在將NetBeans 7.4與Glassfish 4.0一起使用。 這是我的EJB項目接口和實現:
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)
還有其他應該包括的東西嗎?
DbBean類和DbBeanInt接口看起來不錯。 但是BookStoreClient類不正確。
您正在使用@EJB“注入” EJB代理以與遠程EJB通信。 您只能將“ Managed Beans”(並且EJB是由EJB Container管理的Managed Bean)注入“ Managed Beans”中。 而且您的BookStoreClient類不是托管bean,因為您是通過main()方法啟動它的。
我在GitHub上創建了一個存儲庫,以向您展示您的問題的工作示例: https : //github.com/StefanHeimberg/stackoverflow-27411885
只需克隆它並使用Netbeans打開_27411885。
在該存儲庫中,您將找到帶有DBService Bean和DBServiceRemote接口的db-ejb項目。 還有一個DBServiceIT,它使用嵌入式glassfish在本地無接口視圖(@LocalBean)上測試DBService。
db-client項目只需遠程調用DBService bean。 確保首先使用glassfish部署(“運行”)db-ejb項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.