I was able to configure the user implementation of the Timer API and the WorkManager CommonJ-JSR 237 ( http://commonj.myfoo.de ) as a JNDI
resource on Jetty 6 and 8, but it works only in the global area.
With this solution, JNDI
the resource name wm/WorkManager
, I need it to be java:comp/env/wm/WorkManager
, but due to restrictions, I cannot use java:comp/env
the JNDI in the global name because it is reserved for resources with an application scope.
I created a new configuration file with the name {jetty.home}/etc/jetty-wtm.xml
and added to {jetty.home}/start.ini
.
Here is the content jetty-wtm.xml
for Jetty 6, for larger versions this is slightly different, but it works too:
<Configure id="Server" class="org.mortbay.jetty.Server">
<New id="WorkManager" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>wm/WorkManager</Arg>
<Arg>
<New class="de.myfoo.commonj.work.FooWorkManager">
<Arg>
<New id="threadPool" class="de.myfoo.commonj.util.ThreadPool">
<Arg type="int">0</Arg>
<Arg type="int">10</Arg>
<Arg type="int">2</Arg>
</New>
</Arg>
</New>
</Arg>
</New>
<New id="TimeManager" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>tm/TimeManager</Arg>
<Arg>
<New class="de.myfoo.commonj.timers.FooTimerManager">
<Arg>
<New id="threadPool" class="de.myfoo.commonj.util.ThreadPool">
<Arg type="int">0</Arg>
<Arg type="int">10</Arg>
<Arg type="int">2</Arg>
</New>
</Arg>
</New>
</Arg>
</New>
</Configure>
JNDI - java:comp/env/{RESOURCE}
java:comp/env/wm/MyWorkManager
, WEB-INF\jetty-env.xml
.
?
UPDATE:
jetty-env.xml
Jetty 9 , . , 9 JNDI
. :
<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
<New id="WorkManager" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg><Ref id="wac"/></Arg>
<Arg>wm/MyWorkManager</Arg>
<Arg>
<New class="de.myfoo.commonj.work.FooWorkManager">
<Arg>
<New id="threadPool" class="de.myfoo.commonj.util.ThreadPool">
<Arg type="int">0</Arg>
<Arg type="int">10</Arg>
<Arg type="int">2</Arg>
</New>
</Arg>
</New>
</Arg>
</New>
</Configure>