그래서이 질문을하기 전에 물어 보았습니다. 그러나 나는 필요한 것을 조용히하지 않았습니다. 저는 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
나는 그것이 어쨌든 잘못되었다고 생각하여 내 대답을 삭제했습니다. [UndeclaredThrowable] (http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/UndeclaredThrowableException.html)의 설명서를 읽으십시오. 요청에 서버가 수신되는지 (로그 기록) 알고 있습니까? – home
설명서 및 EJB 제한 사항을 읽었으며 일부 보안상의 이유로 EJB가 IOException 및 IOException의 사용을 처리하지 못해서 Bean이 던지지 않은 예외를 시작했다고 생각합니다. 그래서 이런 종류의 projet에 EJB3를 사용하는 것은 희망이없는 경우입니다. 인터셉터와 같은 솔루션으로 이러한 예외를 처리 할 수 있습니다. 왜냐하면 저는 실제로 swith와 다른 것을 배울 시간이 없기 때문입니다. – Hobbit1919
어쨌든 왜 명시 적으로 IOException을 던집니까? 그것은 무의미한 것처럼 보인다. 예외를 리턴하고 사용자가이를 처리 할 수 있다고 생각하면 IOException을 포착하여 세부 사항과 관련한 예외를 던질 수 있습니다. –