2013-04-05 16 views
0

我在会话Bean中使用了一个方法,该方法被一个IOException异常的try和catch块所包围,它看起来像是在制造问题,因为当我尝试从一个Java项目客户端调用某个方法时这里是我的豆代码EJB3的例外

package com.et; 
import com.gestionfichier.gestion.*; 
import java.io.IOException; 
import javax.ejb.ApplicationException; 
import javax.ejb.Stateless; 

@Stateless 
public class PremierEJB3Bean implements PremierEJB3 { 

    public String envoicode(String Code) { 
     String s = null; 
     try { 
      s = GestionFichier.CopierCode(Code); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     CompilerFichierC.CompilerFichier(s,s); 
     return "Compilation réussie !"; 
    } 
} 

,这里是我的客户bean代码:

package com.et; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 

public class PremierEJB3Client { 

    public static void main(String[] args) { 
     try { 
      Context context = new InitialContext(); 
      PremierEJB3 beanRemote = (PremierEJB3) 
      context.lookup("PremierEJB3Bean/remote"); 
      System.out.println(beanRemote.envoicode("somthing")); 
     } catch (NamingException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

和这里是我在控制台中看到

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException 
at $Proxy0.envoicode(Unknown Source) 
at com.et.PremierEJB3Client.main(PremierEJB3Client.java:15) 
    Caused by: java.lang.ClassNotFoundException: [Ljava.lang.StackTraceElement; 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
    And more.... 

所以我很安静确定在我的bean中的异常导致我这个问题,但我不知道如何解决这个问题

+1

我重新格式化了您的代码,使其更易于阅读。下一次您提出问题时,您可以在编辑窗口的预览中看到它的样子。 – GameDroids 2013-04-05 19:07:39

+0

整个堆栈跟踪可能会有所帮助...无法对其进行映像。如果在每行之前用4个空格格式化它,它将出现在可滚动区域中。 – jahroy 2013-04-05 19:21:49

+0

试着围绕你的所有EJB代码与catch异常(不IOException),并验证你的服务器日志 – 2013-04-05 19:37:48

回答

1

为了从独立客户端执行EJB的JNDI查找,需要添加上下文属性。

与以下内容类似。

Hashtable<String, String> ht = new Hashtable<String, String>(); 
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
Context ct=new InitialContext(ht);