我已经创建了非常基本的 EJB3 有状态 bean,但无法远程访问它。 我得到:
Caused by: javax.naming.NamingException: ejb ref resolution error for remote business interfacecom.s9120.ejb.Calculator [Root exception is java.lang.ClassNotFoundException: com.s9120.ejb.Calculator]
我有 1 个 bean 和 1 个接口(interface)。 看起来接口(interface)没有部署(我使用的是 GlassFish): 这是代码:
package com.calc.ejb;
import javax.ejb.Remote;
@Remote
public interface Calculator {
public Double multiply(Double multiplier, Double multiplicand);
public Double divide(Double dividend, Double divisor);
public Double add(Double addend, Double augend);
public Double subtract(Double minuend, Double subtrahend);
public void saveToMemory(Double number);
public Double retrieveFromMemory();
}
bean 类:
package com.calc.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateful;
/**
* Session Bean implementation class CalculatorBean
*/
@Stateful
@Remote(Calculator.class)
public class CalculatorBean implements Calculator{
/* Implementation */
}
访问它:
context = new InitialContext();
Calculator calculator = (Calculator) context.lookup("java:global/Zad3_s9120/CalculatorBean");
我是否必须执行一些步骤才能使接口(interface)对 session bean 可用? 我使用“添加和删除”服务器菜单从 Eclipse 添加它。
最佳答案
据我所知,您有不同的包。
您已将接口(interface)定义为:
com.calc.ejb.Calculator
但是您的异常告诉您:
com.s9120.ejb.Calculator
也许您的客户项目中没有合适的类?
顺便说一句:您不需要在接口(interface)和 EJB 上都指定 @Remote
。您只能在 EJB 上执行 @Remote(MyClass.class)
或在接口(interface)上执行 @Remote
。
关于远程业务接口(interface)的 Glassfish ejb 引用解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057375/