【问题标题】:Glassfish ejb ref resolution error for remote business interface远程业务接口的 Glassfish ejb ref 解析错误
【发布时间】:2012-02-21 20:43:40
【问题描述】:

我创建了非常基本的 EJB3 有状态 bean,但无法远程访问它。 我得到:

原因:javax.naming.NamingException: ejb ref resolution error for remote business interfacecom.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();
}

豆子:

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");

我是否必须执行一些步骤才能使接口对会话 bean 可用? 我使用“添加和删除”服务器菜单从 Eclipse 添加它。

【问题讨论】:

    标签: glassfish ejb-3.0 jndi


    【解决方案1】:

    据我所知,你们有不同的包。

    您已将接口定义为:

    com.calc.ejb.Calculator 
    

    但你的例外告诉你:

    com.s9120.ejb.Calculator
    

    也许您的客户项目中没有合适的类?

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

    【讨论】:

    • 问题是我的客户端上没有正确的“计算器”接口——我只是从 EJB 复制了一个,所以虽然我的客户端上有接口,但它来自不同的包,因此不能没找到。
    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多