Glassfish ejb ref远程业务接口的解析错误

Leo*_*nti 2 jndi glassfish ejb-3.0

我已经创建了非常基本的EJB3有状态bean但无法远程访问它.我越来越:

引起:javax.naming.NamingException:远程业务接口的ejb ref resolution错误com.s9120.ejb.Calculator [根异常是java.lang.ClassNotFoundException:com.s9120.ejb.Calculator]

我有1个bean和1个接口.看起来界面没有部署(我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)

豆:

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 */
}
Run Code Online (Sandbox Code Playgroud)

访问它:

context = new InitialContext(); 
Calculator calculator = (Calculator) context.lookup("java:global/Zad3_s9120/CalculatorBean");
Run Code Online (Sandbox Code Playgroud)

我是否必须采取一些步骤使接口可用于会话bean?我正在使用"添加和删除"服务器菜单从Eclipse添加它.

Pio*_*cki 5

从我所看到的,你有不同的包.

您已将接口定义为:

com.calc.ejb.Calculator 
Run Code Online (Sandbox Code Playgroud)

但你的例外告诉你:

com.s9120.ejb.Calculator
Run Code Online (Sandbox Code Playgroud)

也许你的客户项目中没有合适的课程?

顺便说一句:您不需要同时指定@Remote接口和EJB.您只能@Remote(MyClass.class)在EJB或@Remote接口上执行.

  • 问题是我的客户端上没有正确的"计算器"界面 - 我只是从EJB复制了一个,所以虽然我的客户端上有接口,但它来自不同的包,因此无法找到. (2认同)