2013-04-13 1 views
0

그래서이 질문을하기 전에 물어 보았습니다. 그러나 나는 필요한 것을 조용히하지 않았습니다. 저는 JAVA Entreprise editon과 EJB3를 처음 접했고 JBoss 서버 v4.0에서 Session Bean을 생성하기 위해 이것을 사용하고 있습니다. 그래서 여기에 내 정확한 문제가 내 buisness 메서드를 콩에 파일을 클라이언트에서 보낸 일부 문자열을 저장해야합니다, 그래서 나는 IOExcpetion 던질 의무가있다. 나는 EJB3로 Hello world를 시도했지만 작동했다.하지만 빈에 예외를 사용하기 시작하자 클라이언트는 더 이상 서버 빈을 conncts하지 않는다. 나는 당신에게 나의 콩과 나의 클라이언트의 코드를 줄 것이고, 나는 누군가 내가 제발 할 수있는 노력을했기 때문에 누군가 도와 주실 수 있습니다. 그리고 여전히 같은 오류입니다. 그것은 엔지니어링 프로 제트이고, 나는 정말로 시간이 흐릅니다.EJB3의 IOException

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import javax.ejb.Stateless; 
import com.gestionfichier.gestion.GestionFichier; 

@Stateless 
public class EnvoiCodeExceptionBean implements EnvoiCodeException { 

public String EnvoiCode(String Code) throws IOException 
{ 
    PrintWriter ecrivain = null; 
    File f=GestionFichier.CreerFichier("temp"); 
    ecrivain = new PrintWriter(new BufferedWriter(new FileWriter(f))); 
    ecrivain.println(Code); 
    ecrivain.close(); 
    throw new IOException("error"); 


} 
    } 

내 클라이언트 코드

import java.io.IOException; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 

import com.et.EnvoiCodeException; 
public class AppelClient { 
    public static void main(String[] args) throws IOException { 
    try { 
Context context = new InitialContext(); 
EnvoiCodeException beanRemote = (EnvoiCodeException) 
context.lookup("EnvoiCodeExceptionBean/remote"); 
beanRemote.EnvoiCode("some Sring to send"); 

} catch (NamingException e) { 
e.printStackTrace(); 
    } 
    } 
    } 

하고 난 내 이클립스 콘솔에 무엇을 얻을

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException 
at $Proxy0.EnvoiCode(Unknown Source) 
at AppelClient.main(AppelClient.java:14) 
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) 
at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:50) 
at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:139) 
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 
at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
at java.io.ObjectInputStream.readArray(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.defaultReadObject(Unknown Source) 
at java.lang.Throwable.readObject(Throwable.java:913) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.defaultReadObject(Unknown Source) 
at java.lang.Throwable.readObject(Throwable.java:913) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.defaultReadObject(Unknown Source) 
at java.lang.Throwable.readObject(Throwable.java:913) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.defaultReadObject(Unknown Source) 
at java.lang.Throwable.readObject(Throwable.java:913) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.readObject(Unknown Source) 
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:128) 
at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66) 
at org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:279) 
at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:143) 
at org.jboss.remoting.Client.invoke(Client.java:525) 
at org.jboss.remoting.Client.invoke(Client.java:488) 
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:55) 
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61) 
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53) 
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77) 
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102) 
... 2 more 
,, 여전히 2 주 내 세션 콩 코드 패키지 com.et :( 를 이동 0
+0

나는 그것이 어쨌든 잘못되었다고 생각하여 내 대답을 삭제했습니다. [UndeclaredThrowable] (http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/UndeclaredThrowableException.html)의 설명서를 읽으십시오. 요청에 서버가 수신되는지 (로그 기록) 알고 있습니까? – home

+0

설명서 및 EJB 제한 사항을 읽었으며 일부 보안상의 이유로 EJB가 IOException 및 IOException의 사용을 처리하지 못해서 Bean이 던지지 않은 예외를 시작했다고 생각합니다. 그래서 이런 종류의 projet에 EJB3를 사용하는 것은 희망이없는 경우입니다. 인터셉터와 같은 솔루션으로 이러한 예외를 처리 할 수 ​​있습니다. 왜냐하면 저는 실제로 swith와 다른 것을 배울 시간이 없기 때문입니다. – Hobbit1919

+0

어쨌든 왜 명시 적으로 IOException을 던집니까? 그것은 무의미한 것처럼 보인다. 예외를 리턴하고 사용자가이를 처리 할 수 ​​있다고 생각하면 IOException을 포착하여 세부 사항과 관련한 예외를 던질 수 있습니다. –

답변

-1

이 예외는 사용 된 API (GestionFichier)에서 발생할 수 있습니다. 그것은 사용자가 변경 한 Exception을 던집니다. 그래서 제대로 처리되지 않았습니다. Throwable을 확인한 후 다시 시도하십시오. 여기에서 생성 된 예외에 대해 더 잘 이해하는 데 도움이 될 수 있습니다.

+0

Throwable을 잡지 마십시오. –

+0

매우 사실이지만 어떤 종류의 예외가 던지는지 확인하는 것이 었습니다. – JavaSun

+0

아마도 예외를 catch 할 수 있습니다. –