学习EJB3.0入门,部署了一个教程里的简单例子,用服务访问成功,但用客户端访问总报如下错误
Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
网上搜了半天,都是说配置不对,但我使用的是代码InitialContext ctx=new InitialContext(props);的方式,不存在jndi配置文件不对的问题,最后想起之前一个教程里的一句命名空间的话,于是登录jboss控制台,找到部署的ejb,前面一个java提醒鸟我,将代码里lookup中参数前面加上java:,搞定。
全部代码如下:
public class EjbClient {
public static void main(String[] args) {
Properties props=new Properties();
props.setProperty("java.naming.factroy.initial","org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","localhost:1099");//或者jnp://localhost...也可
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");//此行必须有
try{
InitialContext ctx=new InitialContext(props);
HelloWorld helloworld=(HelloWorld)ctx.lookup("java:HelloWorldBean/remote");//前面的java是关键
System.out.println(helloworld.sayHello("jack"));
}catch(NamingException e){
System.out.println("error:"+e.getMessage());
}
}
}
分享到:
相关推荐
javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax...
javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax...
javax.ejb.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....
javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax...
调用EJB的客户端程序,通过远程接口方式调用
1. **EJB客户端接口**:了解EJB客户端如何与远程服务器上的EJB组件进行交互,包括定义Home接口和Remote接口,以及调用EJB方法的步骤。 2. **JNDI查找**:学习如何通过Java Naming and Directory Interface (JNDI) ...
import javax.ejb.Stateless; @Stateless public class CalculatorBean implements CalculatorRemote, CalculatorLocal { // 实现业务逻辑 } ``` 2. **接口定义**: - `CalculatorRemote` 和 `...
本文将详细探讨EJB3客户端调用EJB的两种情况。 1. **在JBoss集成环境下调用EJB** 当EJB3应用部署在JBoss服务器上,且调用者也在同一个环境中时,调用EJB相对简单。在这种情况下,Web应用可以作为客户端直接调用...
**EJB调用原理分析** Enterprise JavaBeans(EJB)是Java EE平台中用于构建分布式企业级应用的重要组件。EJB提供了服务器端的组件模型,允许开发者将业务逻辑封装在可重用的组件中,这些组件可以透明地运行在Java...
接口通常继承自Java EE提供的EJB接口,例如`javax.ejb.Remote`或`javax.ejb.Local`。在实现类中,可以使用注解来指定EJB的行为,如`@Stateless`、`@Stateful`、`@Singleton`等。 为了使客户端能够访问EJB,我们需要...
@Remote(MyRemoteService.class) public class MyRemoteServiceImpl implements MyRemoteService { public String doSomething(String input) { return "Processed: " + input; } } ``` 在客户端,我们需要使用...
- Remote Method Invocation(RMI):这是EJB之间最基础的调用方式,允许一个EJB实例调用另一个EJB的远程接口方法。 - Local Interface:如果调用方和被调用的EJB在同一应用服务器内,可以使用本地接口,这样可以...
5. **客户端调用**:客户端通过JNDI查找EJB的Home接口,然后创建并调用Bean实例。 **三、WebSphere中调用EJB** 在WebSphere中,调用EJB需要注意以下几点: 1. **JNDI配置**:确保WebSphere服务器配置了正确的JNDI...
标题中的"EJB_Client.rar_ejb"暗示了这是一个关于EJB客户端的示例项目,它可能包含了调用EJB实例所需的配置和代码。EJB客户端是与EJB服务器通信的应用程序部分,用于发起请求并接收响应。 **EJB组件类型** EJB技术...
ConverterEJB.class文件是EJB中的一个组件,它代表了一个特定的业务逻辑单元,通常负责处理与数据库交互、业务规则应用以及其他后端服务的集成。在本案例中,"ConverterEJB.class设计经典代码"是指该组件的源代码...
**ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...
EJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action.rarEJB3+In+Action....