2009-07-29 19 views
5

Tomcat web uygulamasından MBean yöntemini çağırmaya çalışıyorum Hedef MBean, JBoss 4.2.3 altında çalışıyor. uygulamalar aynı sınıfla kavanoza aynı sürümünü kullanın, ancak çağırma ben şu duruma bakın: JBoss kendi sınıfını kullanın ama bir yerden bu sınıfı indirmeyi deneyin ve "başarısız olmadığını düşünüyorumUzak JMX çağırma ClassNotFoundException ile başarısız oldu: ... (güvenlik yöneticisi yok: RMI sınıf yükleyicisi devre dışı bırakıldı

Caused by: java.lang.ClassNotFoundException: ...thisClass... (no security manager: RMI class loader disabled) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:375) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165) 
    at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620) 
    at org.jboss.system.JBossRMIClassLoader.loadClass(JBossRMIClassLoader.java:91) 
    at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) 
    at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
    at java.util.ArrayList.readObject(ArrayList.java:593) 
    at sun.reflect.GeneratedMethodAccessor164.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
    at java.util.HashMap.readObject(HashMap.java:1030) 
    at sun.reflect.GeneratedMethodAccessor163.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
    at java.rmi.MarshalledObject.get(MarshalledObject.java:142) 
    at javax.management.remote.rmi.RMIConnectionImpl$6.run(RMIConnectionImpl.java:1513) 
    ... 20 more 

güvenlik yöneticisi yok: RMI sınıfı yükleyici devre dışı bırakıldı. Ancak bu davranış yerel olarak zaten yüklenmiş olan sınıfı kullanmak için nasıl değiştirilir .. Veya belki de bu tahminde hata yaparım ..?

cevap

0

server.include bu özelliği çalıştırırken -Djava.rmi.server.codebase özelliğini sağladınız ve işe yaramalı.

1

-Djava.rmi.server.codebase özelliği ile dinamik sınıf yüklemesi nadiren gerçekten gerekli, yalnızca arabirimleri ve seri hale getirilmiş sınıf uygulamalarını hem istemci hem de sunucuya derlemek çok daha basit.

fazla ayrıntı için bu cevabı oku: RMI Question - Where do clients get a definition for remote classes that have not been added to registry?

+0

Sadece bu yazı okuyan herkes için buraya netleştirmek için; "arayüzleri + sınıfları hem istemciye hem de sunucuya derleme" yazdığında, hem sunucu hem de istemci dağıtımlarınız için aynı JAR dosyasını kullanmayacağınızdan emin olun. Müşteriler için, sağlanan JAR'da yalnızca gerekli sınıfları derlediğinizden emin olun. –

İlgili konular