Hibernate 奇怪的问题!
写了一些hibernate存储查询的方法,用EJB session bean来封装其调用,然后把这些EJB都成功发布到jboss服务器上。
新建一个测试工程,只把EJB包和一些实体/Model类加入工程CLASSPATH中,在这个工程里面写一些类来测试session bean中
的方法。按我的理解,hibernate的映射和存储方法都在EJB服务器的JVM中运行,远程客户端是不需要知道任何Hibernate
相关包的。但测试中却出问题了:很多方法都不能正常运行,出现类似这样的异常:
java.lang.reflect.UndeclaredThrowableException
at $Proxy1.getRootOrgnization(Unknown Source)
at yadan.client.api.org.OrgManager.getRootOrgnization(OrgManager.java:220)
at yadan.client.test.TestOrgManager.testCreateRootOrg(TestOrgManager.java:42)
at yadan.client.test.TestOrgManager.main(TestOrgManager.java:50)
Caused by: java.lang.ClassNotFoundException: net.sf.hibernate.collection.Set (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:368)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:159)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:136)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:87)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:100)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)
... 4 more
Exception in thread "main"
|
错误表明:客户端找不到net.sf.hibernate.collection.Set类。当我把Hibernate所有相关的jar包加入之后,就可以运行通过了。
同样的错误在web应用中出现,(我单独启一个tomcat来测试ejb的调用)web程序如果没有hibernate的jar包就不能正常运行。
非常不解!不知道是什么地方出错了,还是别的原因。请大家指点和测试!