Je dois exécuter des threads longs dans un environnement de serveur WebLogic Bea 10.0 M1. J'ai essayé d'utiliser WorkManagers pour cela. L'utilisation d'un WorkManager me permet de spécifier mon propre délai d'attente de thread (MaxThreadStuckTime) au lieu d'ajuster le délai d'attente pour l'ensemble de l'application métier.Weblogic Bea 10.0 M1 et WorkManager
Ma configuration est la suivante:
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>
et le haricot :
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();
}
}
}
});
}
}
Lorsque je tente de déployer ces choses, le serveur me donne les exceptions suivantes:
[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.
J'essaie de comprendre comment l'accès/utilisation WorkMangers depuis plusieurs jours, et encore obtenir ceci ou cela comme une exception. Très frustrant!
Merci d'avance!