簡體   English   中英

如何使用Glassfish 4創建遠程EJB Bean?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM