`
anxin587
  • 浏览: 24074 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

简单EJB客户端调用的问题

阅读更多
写好了一个EJB并且也部署到了jboss下面,部署成功,简单说下组成
远程接口 Hello interface 定义了一个业务方法 public String hello()
本地接口 HelloLocal interface 和远程接口一样 public String hello()
Home接口 HelloHome interface
本地Home接口 HelloLocalHome interface
发布到jboss服务器底下成功
客户端代码如下
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import java.rmi.*;
import java.util.*;

//import myejb.*;
import examples.HelloHome;
import examples.Hello;

class  HelloClientTest
{
    public static void main(String[] args) throws Exception {
System.setProperty("java.security.policy","client.policy");

if(System.getSecurityManager()==null)
System.setSecurityManager(new RMISecurityManager());
   
Properties env = new Properties();
        env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
        env.put(Context.PROVIDER_URL, "localhost:1099");
        env.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
        
        Context ctx = new InitialContext(env);

Object obj = ctx.lookup("Hello");
System.out.println("2.......................................");
        HelloHome home = (HelloHome) PortableRemoteObject.narrow(obj,HelloHome.class);
System.out.println("3.......................................");
        Hello hello = home.create();
        System.out.println(hello.hello());
        hello.remove();
    }
}
如果我去掉上面的System.setSecurityManager(new RMISecurityManager());
出现的错误是
     [java] Exception in thread "main" java.security.AccessControlException: acc
ess denied (java.net.SocketPermission 230.0.0.4 connect,accept,resolve)
     [java]     at java.security.AccessControlContext.checkPermission(AccessCont
rolContext.java:323)
     [java]     at java.security.AccessController.checkPermission(AccessControll
er.java:546)
     [java]     at java.lang.SecurityManager.checkPermission(SecurityManager.jav
a:532)
     [java]     at java.lang.SecurityManager.checkMulticast(SecurityManager.java
:1188)
     [java]     at java.net.MulticastSocket.joinGroup(MulticastSocket.java:269)
     [java]     at org.jnp.interfaces.NamingContext.discoverServer(NamingContext
.java:1071)
     [java]     at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:
1199)
     [java]     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:51
6)
     [java]     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:50
9)
     [java]     at javax.naming.InitialContext.lookup(InitialContext.java:392)
     [java]     at HelloClientTest.main(Unknown Source)
     [java] Java Result: 1
如果我加上上面的System.setSecurityManager(new RMISecurityManager())
出现的错误如下
     [java] Exception in thread "main" java.security.AccessControlException: acc
ess denied (java.net.SocketPermission 230.0.0.4 connect,accept,resolve)
     [java]     at java.security.AccessControlContext.checkPermission(AccessCont
rolContext.java:323)
     [java]     at java.security.AccessController.checkPermission(AccessControll
er.java:546)
     [java]     at java.lang.SecurityManager.checkPermission(SecurityManager.jav
a:532)
     [java]     at java.lang.SecurityManager.checkMulticast(SecurityManager.java
:1188)
     [java]     at java.net.MulticastSocket.joinGroup(MulticastSocket.java:269)
     [java]     at org.jnp.interfaces.NamingContext.discoverServer(NamingContext
.java:1071)
     [java]     at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:
1199)
     [java]     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:51
6)
     [java]     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:50
9)
     [java]     at javax.naming.InitialContext.lookup(InitialContext.java:392)
     [java]     at HelloClientTest.main(Unknown Source)
     [java] Java Result: 1
希望大家帮我看看错误原因,thanks
分享到:
评论

相关推荐

    EJB客户端(远程调用)

    调用EJB的客户端程序,通过远程接口方式调用

    EJB视频教程 3.开发EJB的客户端 4.把jboss集成进eclipse

    1. **EJB客户端接口**:了解EJB客户端如何与远程服务器上的EJB组件进行交互,包括定义Home接口和Remote接口,以及调用EJB方法的步骤。 2. **JNDI查找**:学习如何通过Java Naming and Directory Interface (JNDI) ...

    EJB调用原理分析

    1. **客户端调用**: 客户端通过JNDI(Java Naming and Directory Interface)查找目标EJB的JNDI名称,获取到Bean的Home接口实例。 2. **创建Session Bean**: 如果是Session Bean,客户端通过Home接口的`create()`...

    EJB分布式远程调用的小例子的简单实现

    EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于...通过接口定义、EJB实现、JNDI查找和客户端调用,我们可以构建起可靠的分布式系统。此示例提供了一个简单但实用的起点,帮助开发者理解并实践这一技术。

    EJB client调用EJB3 .doc

    本文将详细探讨EJB3客户端调用EJB的两种情况。 1. **在JBoss集成环境下调用EJB** 当EJB3应用部署在JBoss服务器上,且调用者也在同一个环境中时,调用EJB相对简单。在这种情况下,Web应用可以作为客户端直接调用...

    各种EJB之间的调用示例

    - Remote Method Invocation(RMI):这是EJB之间最基础的调用方式,允许一个EJB实例调用另一个EJB的远程接口方法。 - Local Interface:如果调用方和被调用的EJB在同一应用服务器内,可以使用本地接口,这样可以...

    ejb调用详解

    5. **客户端调用**:客户端通过JNDI查找EJB的Home接口,然后创建并调用Bean实例。 **三、WebSphere中调用EJB** 在WebSphere中,调用EJB需要注意以下几点: 1. **JNDI配置**:确保WebSphere服务器配置了正确的JNDI...

    2.开发EJB的客户端

    本文将深入探讨EJB客户端开发的相关知识点,帮助开发者更好地理解和实践这一技术。 首先,我们需要了解EJB的基本概念。EJB是一种服务器端组件,分为三种主要类型:会话Bean(Session Beans)、实体Bean(Entity ...

    EJB_Client.rar_ejb

    EJB客户端调用EJB通常包括以下步骤: 1. **查找EJB**:客户端通过JNDI(Java Naming and Directory Interface)查找EJB的JNDI名称,从而获取到EJB的引用。 2. **创建会话**:客户端使用EJB的引用创建会话,这可能...

    ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端

    这意味着每个客户端调用的实例都是独立的,不会在不同的调用之间保持数据。这对于执行一次性操作或提供计算服务非常有用。 在EJB 3.0中,我们可以通过以下步骤创建一个无状态会话Bean: 1. **定义Bean接口**:首先...

    java 客户端访问EJB

    4. **添加业务方法**:向会话bean中添加实际的业务逻辑处理方法,这些方法会被客户端调用来执行特定的操作。 5. **部署企业应用程序**:将包含会话bean的整个企业应用程序部署到Glassfish服务器上。部署后,EJB就...

    EJB 基于Java的远程方法调用(RMI)技术

    EJB客户端从不直接访问真实的EJB组件,而是通过容器来间接访问。容器充当EJB组件的代理,负责创建、管理和销毁这些组件。 #### 二、EJB容器的作用 EJB容器提供了运行在其内的组件(即EJBs)所需的高级管理功能。...

    JNDI调用分布式EJB3 通用接口

    5. **调用EJB3方法**:通过代理对象,客户端可以像调用本地方法一样调用EJB3组件的方法,所有的网络通信和事务管理都在后台自动处理。 6. **分布式EJB3**:如果EJB3组件部署在多个服务器上,JNDI查找可能返回一个...

    实战EJB 实战EJB 实战EJB

    当没有客户端调用时,容器可以自由销毁实例。 **编写一个无状态的SessionBean程序** 1. **定义接口**:包括`remote`和`local`接口。 2. **实现无状态会话Bean**:实现定义的接口。 3. **配置部署描述符**:使用`...

    各种EJB之间的调用示例.zip

    - **远程方法调用(Remote Method Invocation, RMI)**:客户端通过RMI调用EJB的接口,实现跨JVM的通信。适用于客户端不在同一个应用服务器上的情况。 - **本地方法调用(Local Method Invocation)**:当客户端和...

    各种EJB之间的调用示例.7z

    - **远程方法调用 (Remote Method Invocation, RMI)**:客户端通过接口调用EJB的方法,该接口由EJB容器生成并暴露,实现跨JVM通信。 - **本地方法调用 (Local Method Invocation)**:当EJB和客户端在同一JVM中运行...

Global site tag (gtag.js) - Google Analytics