【发布时间】:2013-05-13 19:36:05
【问题描述】:
到目前为止,几天来一直在尝试运行我的第一个 EJB 项目。我的 EJB 项目目前有这个源代码:
package calc;
import javax.ejb.Remote;
@Remote
public interface SessionBeanRemote {
public int add(int a,int b);
}
package calc;
import javax.ejb.Stateless;
@Stateless(name="MySessionBean",mappedName="myCalculator")
public class SessionBean implements SessionBeanRemote {
public int add(int a,int b){
return a +b;
}
}
其次,有另一个简单的 java 项目,我可以在其中调用 EJB 组件:
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.enterprise.naming.
SerialInitContextFactory");
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ctx = new InitialContext(props);
SessionBeanRemote bean = (SessionBeanRemote) ctx.lookup("myCalculator");
int result = bean.add(3, 4);
System.out.println(result);
ctx.close();
使用的 JAR:gf-client.jar,不需要像 Glassfish 社区推荐的那样添加其他 JAR
异常捕获:
java.lang.NoSuchMethodError: com.sun.corba.ee.spi.orbutil.fsm.FSMImpl.(Lcom/sun/corba/ee/spi/orbutil/fsm/StateEngine;Lcom/sun/corba/ee/ spi/orbutil/fsm/State;Z)V
2 个其他问题:
context.lookup("java:global:/componentAddress")与context.loopup("mappedName")它们之间有什么区别,什么时候使用它们?props.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.100")对比props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost")
【问题讨论】:
-
关于这个主题的讨论很多。您应该可以从以下位置找到答案:valery-lavrov.com/blog/2012/05/15/…
-
@SamiKorhonen 恐怕还是会得到 java.lang.NoSuchMethodError
-
你正在按照指示使用 appserv-rt.jar 吗?
-
您对 CORBA 有什么特别的原因吗?作为一项技术,它......非常非常传统。此外,让应用服务器使用
@EJB注释注入您的 bean 可能更容易。最后但并非最不重要的一点是,我有一种挥之不去的预感,即不再需要家庭/远程界面废话。 -
回复:您的“另外两个问题”位:永远不要这样做。不要在现有问题上移动球门柱。如果您最初提出的问题得到了满意的回答,则应接受答案,有关不同问题的其他问题应单独发布。
标签: java eclipse glassfish-3 ejb-3.1