Weblogic Bea 10.0 M1 and WorkManager

Posted by ma-ver-ick on Stack Overflow See other posts from Stack Overflow or by ma-ver-ick
Published on 2009-07-09T16:21:58Z Indexed on 2010/03/28 12:33 UTC
Read the original article Hit count: 768

Filed under:
|
|
|

Hi there!

I have to execute long running threads in a WebLogic Bea 10.0 M1 server environment. I tried to use WorkManagers for this. Using an own WorkManager allows me to specify my own thread timeout (MaxThreadStuckTime) instead of adjusting the timeout for the whole business application.

My setup is as follows:

weblogic-ejb-jar.xml:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">

    <weblogic-enterprise-bean>
        <ejb-name>TestBean</ejb-name>
        <resource-description>
            <res-ref-name>myWorkManager</res-ref-name>
            <jndi-name>wm/myWorkManager</jndi-name>
        </resource-description>
    </weblogic-enterprise-bean>

</weblogic-ejb-jar>

weblogic-application.xml:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic xmlns="http://www.bea.com/ns/weblogic/90" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.bea.com/ns/weblogic/90
    http://www.bea.com/ns/weblogic/90/weblogic.xsd">

    <work-manager>
        <name>myWorkManager</name>
        <ignore-stuck-threads>1</ignore-stuck-threads>
    </work-manager>

</weblogic>

and the Bean:

import javax.annotation.Resource;
import javax.ejb.Stateful;

import weblogic.work.WorkManager;

@Stateful(mappedName = "TestBean")
public class TestBean implements TestBeanRemote {

    @Resource(name = "myWorkManager")
    private WorkManager myWorkManager;

    public void test() {
        myWorkManager.schedule(new Runnable() {

            public void run() {
                while (true) {
                    System.out.println("test: +++++++++++++++++++++++++");
                    try {
                        Thread.sleep(45000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

            }
        });
    }
}

When I try to deploy this things, the server gives me the following exceptions:

[EJB:011026]The EJB container failed while creating the java:/comp/env namespace for this EJB deployment.
weblogic.deployment.EnvironmentException: [EJB:010176]The resource-env-ref 'myWorkManager' declared in the ejb-jar.xml descriptor has no JNDI name mapped to it. The resource-ref must be mapped to a JNDI name using the resource-description element of the weblogic-ejb-jar.xml descriptor.

I try to figure out how to access / use WorkMangers for days now, and still get this or that as an exception. Very frustrating!

Thanks in advance!

© Stack Overflow or respective owner

Related posts about java

Related posts about java-ee