Enable software concurrency on Jetty with WorkManager

I was able to configure the user implementation of the Timer API and the WorkManager CommonJ-JSR 237 ( http://commonj.myfoo.de ) as a JNDIresource on Jetty 6 and 8, but it works only in the global area.
With this solution, JNDIthe resource name wm/WorkManager, I need it to be java:comp/env/wm/WorkManager, but due to restrictions, I cannot use java:comp/envthe 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.xmland added to {jetty.home}/start.ini.
Here is the content jetty-wtm.xmlfor Jetty 6, for larger versions this is slightly different, but it works too:

<!-- =============================================================== -->
<!-- Configure Server Time and Work Managers                         -->
<!-- =============================================================== -->

<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>
+4
1

,

- , , web.xml. org.eclipse.jetty.plus.jndi.EnvEntry web.xml.

<New class="org.eclipse.jetty.plus.jndi.EnvEntry">
  <Arg></Arg>
  <Arg>mySpecialValue</Arg>
  <Arg type="java.lang.Integer">4000</Arg>
  <Arg type="boolean">true</Arg>
</New>

env-entry mySpecialValue    4000, JVM. JNDI   java: comp/env/mySpecialValue -. ,    , env-entry    web.xml. ,    , false.

etc ,

, $JETTY_HOME/etc/jetty-myjndi.xml:

 <New  id="jdbc/myds"  class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg></Arg>
     <Arg>jdbc/myds</Arg>
     <Arg>
       <New  class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
         <Set  name="Url">jdbc:mysql://localhost:3306/chat</Set>
         <Set  name="User">root</Set>
         <Set  name="Password">sillyness</Set>
       </New>
     </Arg>
  </New>

jdbc/myds webapp java:comp/env/jdbc/myfoo WEB-INF/jetty-env.xml:

   <Call class="org.eclipse.jetty.plus.jndi.NamingEntryUtil" name="bindToENC">
       <Arg></Arg>    <!-- scope of naming entry, ie same as first argument to your naming entry definition, in this case, null -->
       <Arg>jdbc/myfoo</Arg>
       <Arg>jdbc/myds</Arg>
   </Call>

, WEB-INF/jetty-env.xml "bindToENC", XML , webapp, java: comp/env.

+1

Source: https://habr.com/ru/post/1689394/


All Articles