2014-06-26 34 views
1

我試圖執行應用至極使用EJB和我這有例外:什麼可能意味着這個ejb異常?

javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446346 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL: ----------BEGIN server-side stack trace---------- 
org.omg.CORBA.MARSHAL: WARNING: 00810010: Error from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 10 completed: Maybe 
    at com.sun.proxy.$Proxy154.valuehandlerReadError(Unknown Source) 
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:912) 
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1005) 
    at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:518) 
    at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383) 
    at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readArguments(DynamicMethodMarshallerImpl.java:450) 
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:171) 
    at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatchToServant(ServerRequestDispatcherImpl.java:528) 
    at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatch(ServerRequestDispatcherImpl.java:199) 
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1549) 
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:1425) 
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleInput(MessageMediatorImpl.java:930) 
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:213) 
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:694) 
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.dispatch(MessageMediatorImpl.java:496) 
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.doWork(MessageMediatorImpl.java:2222) 
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.sun.corba.ee.impl.io.IIOPInputStream 
    at com.sun.corba.ee.impl.io.ValueHandlerImpl.createInputStream(ValueHandlerImpl.java:820) 
    at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:263) 
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:903) 
    ... 16 more 

----------END server-side stack trace---------- vmcid: OMG minor code: 10 completed: Maybe 

做的人都知道,該如何解決呢? 我有glassfish 4和jdk 1.7.0_60。

申請的代碼:

package com.apress.javaee6.chapter06; 

import javax.ejb.*; 

public class Main { 

    @EJB 
    private static BookEJBRemote bookEJB; 

    public static void main(String[] args) { 
     Book book = new Book(); 
     book.setTitle("The Hitchhiker's Guide to the Galaxy"); 
     book.setPrice(12.5F); 
     book.setDescription("Scifi book created by Douglas Adams"); 
     book.setIsbn("1-84023-742-2"); 
     book.setNbOfPage(354); 
     book.setIllustrations(false); 

     bookEJB.createBook(book); 

    } 
} 

回答

1

的錯誤消息表明您的由面對this bug時所引起JDK 1.7_55JDK 1.7_60。要解決它,你必須降級到JDK 1.7_51,安裝JDK 8或等待較新版本的JDK 7這不會導致此錯誤。

無論如何,你試圖做的是不可能的這樣。您不能在純java類(不受容器管理的類)中使用@EJB

如果你想使用一個bean,你必須通過JNDI檢索它。看看GlassFish EJB FAQ看看是如何完成的。

參見:

+0

我安裝了JDK 8,但它仍然是例外。我使用Glassfish ACC來運行應用程序(appclient -client project.jar)。所以,班級應該由容器管理。 感謝您的參考,但我想使此代碼工作。 – user3779854

+0

我的錯誤。是的,這是工作。謝謝! – user3779854

+0

歡迎您:) – unwichtich