Я развертываю веб-приложение в weblogic с кучей JAR-файлов в web-inf \ lib.Когда я вызываю ряд методов из классов в этих jar-файлах в моем сервлете - все работает отлично.Однако у меня также есть JAR-клиент RMI - и когда я вызываю один из его методов - он дает мне ClassNotFoundException
:
Caused By: java.lang.ClassNotFoundException: com.xyz.RMIClientImpl
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:393)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:185)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:219)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:152)
Я не совсем понимаю загрузку классов на сервере приложений, но из stacktrace ясно видно, чтокакой-то загрузчик классов rmi пытается загрузить класс и не находит его - хотя он очень присутствует в моем web-inf / lib
NOTE1 : если я пытаюсь загрузить класс самостоятельно, используяClass.forName("com.xyz.RMIClientImpl")
все работает отлично.
Так что что-то, связанное с загрузкой классов и RMI - если кто-то сможет объяснить, что происходит, было бы замечательно.
NOTE2 : Если я попробуюавтономный клиент (не веб-приложение) и вызов клиента RMI, все работает нормально, поэтому проблема возникает только при развертывании на сервере приложений (weblogic)
NOTE3 : я скопировал все своифляги из папки lib моего приложения и поместили их в библиотеку weblogic, и тогда я не получил это исключение.Да, я знаю, что это не правильный способ решения проблемы, но тогда, пожалуйста, укажите мне правильное направление:)
NOTE4 : настройка следующего также не помогла:
<wls:container-descriptor><wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes></wls:container-descriptor>