[JBoss jBPM] - Re: WARN [ProxyWarnLog] Narrowing proxy to class org.jbpm.g
by vnm
Hi Ronald,
Sorry to send you improper code..As I was in bit hurry to send you I just skipped to resolve compilation issues,below is my modified code..Before you run it I request you to put my processdefintion.xml in src for testing,herein with I am also sending you my xml..
And another thing I want to mention is in my code import org.jbpm.db.AbstractDbTestCase; this import couldnt be resolved as this class in not in my jbpm-jpdl.jar...I am using jbpm version 3.2.3..And the same class is used in java file for which you sent me the link
code of class
| package org.jbpm.job.executor;
|
| import java.io.Serializable;
| import java.util.ArrayList;
| import java.util.Collections;
| import java.util.HashSet;
| import java.util.List;
| import java.util.Set;
| import java.util.TreeSet;
|
| import org.apache.commons.logging.Log;
| import org.apache.commons.logging.LogFactory;
| import org.jbpm.JbpmConfiguration;
| import org.jbpm.JbpmContext;
| import org.jbpm.context.exe.ContextInstance;
| import org.jbpm.db.AbstractDbTestCase;
| import org.jbpm.graph.def.Action;
| import org.jbpm.graph.def.ActionHandler;
| import org.jbpm.graph.def.ProcessDefinition;
| import org.jbpm.graph.exe.ExecutionContext;
| import org.jbpm.graph.exe.ProcessInstance;
| import org.jbpm.graph.exe.Token;
| import org.jbpm.graph.node.DecisionHandler;
|
| public class JobExecutorDbTest extends AbstractDbTestCase {
| final JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml");
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| static final int nbrOfConcurrentProcessExecutions = 20;
| static final int timeout = 60000;
| final Log logger = LogFactory.getLog(getClass());
| static Set<String> collectedResults = Collections.synchronizedSet(new TreeSet<String>());
| static List<Long> allocatedProcessIds = Collections.synchronizedList(new ArrayList<Long>());
|
| @Override
| protected void setUp() throws Exception {
| super.setUp();
| getJbpmConfiguration().getJobExecutor().setNbrOfThreads(4);
| }
|
| @Override
| protected void tearDown() throws Exception {
| getJbpmConfiguration().getJobExecutor().setNbrOfThreads(1);
| super.tearDown();
| }
|
| public void testJobExecutor() {
| deployProcessDefinition();
| try {
| ServiceVO serviceVO = new ServiceVO();
| serviceVO.setProcessDefinitionName("SuperStateSample");
| initiateProcess(serviceVO);
| processJobs(timeout);
| // assertEquals(getExpectedResults(), collectedResults);
| }
| finally {
|
| }
| }
|
| void deployProcessDefinition() {
| ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("processdefinition.xml");
| jbpmContext.deployProcessDefinition(processDefinition);
|
| }
|
| void initiateProcess(ServiceVO serviceVO) {
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| String processName = serviceVO.getProcessDefinitionName();
| logger.info("processName==="+processName);
| ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate(processName);
| logger.info("--------------after getting processInstance");
| long processInstanceId = processInstance.getId();
|
| Token token = processInstance.getRootToken();
| logger.info("--------------after getting token");
| ContextInstance contextInstance = processInstance.getContextInstance();
| logger.info("--------------after getting contextInstance");
| contextInstance.setVariable("serviceVO", serviceVO);
|
| /*if(processVariables!=null){
| Set keySet = processVariables.keySet();
| Iterator keyIterator = keySet.iterator();
| String key = null;
| Object obj = null;
| while(keyIterator.hasNext()){
|
| key = (String)keyIterator.next();
| obj = processVariables.get(key);
|
| contextInstance.setVariable(key,obj);
|
| }
| }*/
| processInstance.signal();
| logger.info("---------after processInstance singal");
| logger.info("--------------after signal");
|
| logger.info("--------------after saving token");
| jbpmContext.save(processInstance);
| logger.info("--------------after saving processInstance");
| logger.info("root token======="+token.getId());
|
|
|
| jbpmContext.close();
| }
| }
|
| //start
| class ServiceVO implements Serializable{
|
|
|
| private String processDefinitionName;
|
|
| public String getProcessDefinitionName() {
| return processDefinitionName;
| }
|
| public void setProcessDefinitionName(String processDefinitionName) {
| this.processDefinitionName = processDefinitionName;
| }
|
|
|
| }
| //end
|
|
| //start
| class ActionHandler1 implements ActionHandler{
|
| public void execute(ExecutionContext executionContext) throws Exception {
| System.out.println("===========>>>>in action handler 1 >>>>>>>>>");
|
| }
| }
| //end
|
| //start
| class DecisionHandler1 implements DecisionHandler {
| public String decide(ExecutionContext arg0) throws Exception {
| // TODO Auto-generated method stub
| System.out.println("--in handler1-");
| return "node3";
| }
| }
| //end
|
| //start
| class DecisionHandler2 implements DecisionHandler {
| public String decide(ExecutionContext arg0) throws Exception {
| // TODO Auto-generated method stub
| System.out.println("--in handler2-");
| return "node4";
| }
| }
|
| //end
code for processdefinition.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="SuperStateSample">
|
|
| <start-state name="start-state1">
| <transition to="node1"></transition>
| </start-state>
|
|
| <node name="node1">
| <event type="node-enter">
| <action name="action1" class="testFolder.ActionHandler1"></action>
| </event>
| <transition to="super-state1"></transition>
| </node>
|
| <super-state name="super-state1">
| <node name="node3">
| <event type="node-enter">
| <action name="action3" class="testFolder.ActionHandler3"></action>
| </event>
| <transition to="join1"></transition>
| </node>
| <node name="node4">
| <event type="node-enter">
| <action name="action4" class="testFolder.ActionHandler4"></action>
| </event>
| <transition to="join1"></transition>
| </node>
| <decision name="decision1">
| <handler class="testFolder.DecisionHandler1"></handler>
| <transition to="node3" name="node3"></transition>
| <transition to="join1" name="to join1"></transition>
| </decision>
| <decision name="decision2">
| <handler class="testFolder.DecisionHandler2"></handler>
| <transition to="node4" name="node4"></transition>
| <transition to="join1" name="to join1"></transition>
| </decision>
| <join name="join1">
| <transition to="node5"></transition>
| </join>
| <fork name="fork1">
| <transition to="decision1"></transition>
| <transition to="decision2" name="to decision2"></transition>
| </fork>
| <node name="node5">
| <event type="node-enter">
| <action class="testFolder.ActionHandler5"></action>
| </event>
| </node>
| <node name="node2">
| <event type="node-enter">
| <action name="action2" class="testFolder.ActionHandler2"></action>
| </event>
| <transition to="fork1"></transition>
| </node>
| <transition to="end-state1"></transition>
| </super-state>
|
|
| <end-state name="end-state1"></end-state>
|
|
| </process-definition>
jbpm.cfg.xml
| <jbpm-configuration>
|
| <!--
| The default configurations can be found in org/jbpm/default.jbpm.cfg.xml
| Those configurations can be overwritten by putting this file called
| jbpm.cfg.xml on the root of the classpath and put in the customized values.
| -->
| <jbpm-context>
| <service name='persistence' factory='org.jbpm.persistence.db.DbPersistenceServiceFactory' />
| <service name='message' factory='org.jbpm.msg.db.DbMessageServiceFactory' />
| <service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
| <!--<service name='scheduler' factory='org.jbpm.scheduler.db.DbSchedulerServiceFactory' />-->
| <service name='logging' factory='org.jbpm.logging.db.DbLoggingServiceFactory' />
| <service name='authentication' factory='org.jbpm.security.authentication.DefaultAuthenticationServiceFactory' />
| </jbpm-context>
|
| <!-- configuration resource files pointing to default configuration files in jbpm-{version}.jar-->
| <string name='resource.hibernate.cfg.xml' value='hibernate.cfg.xml' />
| <!-- <string name='resource.hibernate.properties' value='hibernate.properties' /> -->
| <string name='resource.business.calendar' value='org/jbpm/calendar/jbpm.business.calendar.properties' />
| <string name='resource.default.modules' value='org/jbpm/graph/def/jbpm.default.modules.properties' />
| <string name='resource.converter' value='org/jbpm/db/hibernate/jbpm.converter.properties' />
| <string name='resource.action.types' value='org/jbpm/graph/action/action.types.xml' />
| <string name='resource.node.types' value='org/jbpm/graph/node/node.types.xml' />
| <string name='resource.parsers' value='org/jbpm/jpdl/par/jbpm.parsers.xml' />
| <string name='resource.varmapping' value='org/jbpm/context/exe/jbpm.varmapping.xml' />
|
| <int name='jbpm.byte.block.size' value="1024" singleton="true" />
| <bean name='jbpm.task.instance.factory' class='org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl' singleton='true' />
| <bean name='jbpm.variable.resolver' class='org.jbpm.jpdl.el.impl.JbpmVariableResolver' singleton='true' />
|
| </jbpm-configuration>
Thanks and Regards
vnm
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4240757#4240757
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4240757
16 years, 9 months
[EJB 3.0] - Inject dependency on JMS topic into servlet on startup
by sanches
Hello All,
I have EAR with multiple EJB and single WAR inside.
EJBs inject JMS administrative resources such as Destination and ConnectionFactory using @Resource annotation.
They depend on the MBean which represents JMS Topic. MBean is configured in deployment descriptor within one of EJB and that works well.
But when I try to apply the same dependency for servlet code (servlet is marked as load-on-startup in web.xml) and deploy EAR onto JBoss, it fails.
This is happening (as I realized from logs) because JMS Topic has not been bound yet.
If I don't mark servlet as load-on-startup, but rather invoke it after server has started, injection in servlet works well.
What is the right way to specify that servlet does depend on the JMS resource (or MBean which represents this resource)?
Exception:
| 2009-06-29 16:46:46,218 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) deploy, ctxPath=/htc
| 2009-06-29 16:46:46,734 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/htc]] (HDScanner) Marking servlet EventListenerServlet as unavailable
| 2009-06-29 16:46:46,750 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/htc]] (HDScanner) Servlet /htc threw load() exception
| javax.naming.NameNotFoundException: topic not bound
| at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
| at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
| at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
| at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
| at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
| at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
| at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
|
Servlet code:
| @Depends({"jboss.mq.destination:service=Topic,name=NMSTopic"})
| public class EventListenerServlet extends HttpServlet
| {
| @Resource(name = "NMSTopic", mappedName = "jms/topic")
| private Destination destination;
|
| @Resource(name = "ConnectionFactory", mappedName = "java:ConnectionFactory")
| private ConnectionFactory connectionFactory;
|
| private javax.jms.Connection jmsConnection;
| private Session session = null;
| ...
|
EJB code:
| @Stateful
| @Depends("jboss.mq.destination:service=Topic,name=NMSTopic")
| public class NMS implements NMSRemote
| {
| private transient Logger logger = Logger.getLogger(NMS.class);
|
| @Resource(name = "NMSTopic", mappedName = "jms/topic")
| private Destination destination;
|
| @Resource(name = "ConnectionFactory", mappedName = "java:ConnectionFactory")
| private ConnectionFactory connectionFactory;
| ...
Deployment descriptor for that bean: (META-INF\jbossmq-destinations-service.xml)
| <?xml version="1.0" encoding="UTF-8"?>
| <server>
| <mbean code="org.jboss.mq.server.jmx.Topic"
| name="jboss.mq.destination:service=Topic,name=NMSTopic">
| <attribute name="JNDIName">jms/topic</attribute>
| <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
| </mbean>
| </server>
|
Thanks,
Alex.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4240741#4240741
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4240741
16 years, 9 months