到目前为止,一直在尝试运行我的第一个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,无需添加其他JAR,因为Glassfish社区得到了赞扬
捕获到异常:
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")
最佳答案
问题简单地归结于glassfish 3.0版,下载了最新的3.1.2版,一切正常。
关于java - 查找EJB组件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16529783/