以下是我的示例代码:
AddStatelessBean.java:
@Stateless(name = "AddStatelessBean", mappedName="ASBean")
@Remote(AddStatelessBean.class)
@LocalBean
public class AddStatelessBeanImpl implements AddStatelessBean {
public int add(int a, int b) {
return a + b;
}
}
我的调用代码: CallAddBean.java:
public static AddStatelessBean getAsbByName() throws Exception {
Context initialContext = new InitialContext();
AddStatelessBean asbObj = (AddStatelessBean) initialContext.lookup("ASBean");
return asbObj;
}
但我收到以下错误:
javax.naming.NameNotFoundException: Context: VRDWIN7WAS9Node03Cell/nodes/VRDWIN7WAS9Node03/servers/server1, name: ASBean: First component in name ASBean not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
但是,如果我去 Websphere Admin Console -> Applications -> Websphere Enterprise Applications -> -> EJB JNDI Names 并在那里分配相同的 JNDI 名称并尝试查找,它正在工作。
我不想做那个额外的步骤或配置任何 XML (ibm-ejb-jar-bnd.xml) 以在应用程序部署过程中实现这一点。
如何从纯 JAVA 代码本身进行此绑定?我的主要动机是让我的代码独立于服务器运行。