[
https://issues.apache.org/jira/browse/DAEMON-100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12882691#action_12882691
]
Antony Scerri commented on DAEMON-100:
--------------------------------------
Sorry to do this a little messily but i have a number of different contribution
so a single patch isnt possible. I believe the solution to this problem which I
encountered whilst handling an application hosting an RMI registry which was
generating class not found exception when registering objects because of this
lack of fully supporting class loader is the modification of the
__apxJavaWorkerThread method in javajni.c. I have attached an updated version
of this method with just the parts relating to this problem.
Essentialy all it does is after the native thread is attached to the VM (which
is different from the one which creates the main class. It checks to see if a
thread context class loader can be found, this is incase the same thread that
created the main class is now being used in which case it should already have
one. I know this isnt the case at the moment but incase the design changes i
thought it worth putting it inside a check. If not it then gets the class
loader from the main class and assigns it to the current threads context class
loader, therefore providing a fully functional class loader for the thread
itself.
There could be some more exception checking between all the calls added with
appropriate failure paths, but this should be enough to demonstrate the core
fix. I have succesffuly used this to get a java application loaded on windows
through the prunsrv.exe that creates an RMI registry and registers objects
appropriately.
> Thread.currentThread().getContextClassLoader() == null when the program is
> runned by Prunsrv
> --------------------------------------------------------------------------------------------
>
> Key: DAEMON-100
> URL: https://issues.apache.org/jira/browse/DAEMON-100
> Project: Commons Daemon
> Issue Type: Bug
> Components: Procrun
> Environment: Win XP, jre1.5.0_11, -Djava.security.policy=<path to a
> file with following content>:
> grant {
> permission java.security.AllPermission "", "";
> permission com.sun.rmi.rmid.ExecPermission "<<ALL FILES>>";
> permission com.sun.rmi.rmid.ExecOptionPermission "*";
> };
> Reporter: Anton Vodonosov
> Attachments: __apxJavaWorkerThread.txt, DaemonLoader.patch
>
>
> Thread.currentThread().getContextClassLoader() == null when the program is
> runned by Prunsrv, but when we run the same system using java.exe,
> Thread.currentThread().getContextClassLoader() is not null.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.