[jBPM] - How to Send Signal Out from a WorkItemHandler?
by Bruce Cui
Bruce Cui [http://community.jboss.org/people/brucecui] created the discussion
"How to Send Signal Out from a WorkItemHandler?"
To view the discussion, visit: http://community.jboss.org/message/612163#612163
--------------------------------------------------------------
I have been trying to implement multi-threading processes with jBPM, as well as time consuming batch tasks. I found the console was executing the processes in one same main thread, at least so appeared to me, so I tried to put the task logic in a Thread instance and started it in the WorkItemHandler. For single thread but time consuming tasks, which I need to wait for the return, I also passed the ProcessInstance as a parameter, so that when the thread finished its job, it could send out a signal togher with a return Object to notify the process to move forward. And while it was running, it would't occupy the main thread for long time.
Local testing seems fine, only the job wouldn't exit after all things done. Then I put all stuf on web, but this time I met several exceptions, saying like: "java.lang.IllegalArgumentException: IOException while storing workItem 1: org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl$1"
and "Could not commit session or rollback"
So I guess I should not pass the instance reference out, otherwise session may not be able to close or something. But is there a way to signal out from the WorkItemHandler or the Thread it starts, so that I can notify the process instance?
I see there are external signals, but it requires reference to ksession. But I didn't find a clue from either the docs or the API about acquire the ksession reference properly. Could you be so kind to help me out here? Or else I'll have to give up, since time consuming tasks running in the same main thread together will surely be a nightmare.
Thanks,
Bruce
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/612163#612163]
Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&cont...]
12 years, 8 months
[JBoss Web Services] - WebServiceException: Cannot find service endpoint target
by johannes dünser
jodue [http://community.jboss.org/people/jodue] created the discussion
"WebServiceException: Cannot find service endpoint target"
To view the discussion, visit: http://community.jboss.org/message/566689#566689
--------------------------------------------------------------
hi!
i am trying to resolve the following problem for some day's now without success. maybe one of you jboss-guru's can point me in the right direction ;)
i am developing a webservice with *jboss4.2.2/3-ga* and *java1.6*. i managed to get a simple web-service running but when i add it to the whole project, the deployer gives me this exception (trace):
13:13:42,482 ERROR [MainDeployer] Could not start deployment: file:/data/usr/local/jboss-4.2.3.GA/server/default/tmp/deploy/tmp1136423091139585996base-app.jar-contents/base.jar
javax.xml.ws.WebServiceException: Cannot find service endpoint target: jboss.j2ee:name=MailingListService,service=EJB3,jar=base.jar,ear=base-app.jar
at org.jboss.wsf.container.jboss42.InvocationHandlerEJB3.init(InvocationHandlerEJB3.java:83)
at org.jboss.wsf.framework.deployment.DefaultLifecycleHandler.create(DefaultLifecycleHandler.java:51)
at org.jboss.wsf.framework.deployment.EndpointLifecycleDeploymentAspect.create(EndpointLifecycleDeploymentAspect.java:42)
at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:118)
at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)
at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:90)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy34.start(Unknown Source)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy9.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
13:13:42,482 ERROR [MainDeployer] Could not start deployment: file:/data/usr/local/jboss-4.2.3.GA/server/default/tmp/deploy/tmp1136423091139585996base-app.jar-contents/base.jar
javax.xml.ws.WebServiceException: Cannot find service endpoint target: jboss.j2ee:name=MailingListService,service=EJB3,jar=base.jar,ear=base-app.jar
at org.jboss.wsf.container.jboss42.InvocationHandlerEJB3.init(InvocationHandlerEJB3.java:83)
at org.jboss.wsf.framework.deployment.DefaultLifecycleHandler.create(DefaultLifecycleHandler.java:51)
at org.jboss.wsf.framework.deployment.EndpointLifecycleDeploymentAspect.create(EndpointLifecycleDeploymentAspect.java:42)
at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:118)
at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)
at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:90)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy34.start(Unknown Source)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy9.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
the service seems to be registered but not started as i see it under *Registered Service Endpoints* but with "*Start Time = null*"
from what i have read on other boards/mailing lists, it seems to be some sort of a timing problem/race condition. the (simople test) service itself does not depend on any other class but yet again, the problem only occurs when it's integrated in the whole project which also workes by itself ???
the demo code:
@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public interface IMailingListService extends Remote
{
@WebMethod public String helloWorld() throws RemoteException;
}
@Stateless
@WebService(
endpointInterface="packagename.IMailingListService"
)
public class MailingListService implements IMailingListService
{
@WebMethod public String helloWorld() throws RemoteException
{
return "hello world";
}
}
thanks in advance for any idea that points me in the right direction :)
greetings johannes
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/566689#566689]
Start a new discussion in JBoss Web Services at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&cont...]
12 years, 8 months
[JBoss Remoting] - Re: Remote Client.addCallbackListener hang
by Ron Sigal
Ron Sigal [http://community.jboss.org/people/ron_sigal] created the discussion
"Re: Remote Client.addCallbackListener hang"
To view the discussion, visit: http://community.jboss.org/message/601555#601555
--------------------------------------------------------------
Hi David,
I think you're on the right track. BisocketClientInvoker.handleConnect() is waiting for a socket to use for the "control" connection. In fact, it should already be there in the sockets Set. When JBossMessaging sets up a connection, it calls org.jboss.remoting.Client.addListener(), which results in a call to BisocketClientInvoker.transport():
protected Object transport(String sessionId, Object invocation, Map metadata,
Marshaller marshaller, UnMarshaller unmarshaller)
throws IOException, ConnectionFailedException, ClassNotFoundException
{
String listenerId = null;
if (invocation instanceof InvocationRequest)
{
InvocationRequest ir = (InvocationRequest) invocation;
Object o = ir.getParameter();
if (o instanceof InternalInvocation)
{
InternalInvocation ii = (InternalInvocation) o;
if (InternalInvocation.ADDLISTENER.equals(ii.getMethodName())
&& ir.getLocator() != null) // getLocator() == null for pull callbacks
{
Map requestPayload = ir.getRequestPayload();
listenerId = (String) requestPayload.get(Client.LISTENER_ID_KEY);
listenerIdToClientInvokerMap.put(listenerId, this);
BisocketServerInvoker callbackServerInvoker;
callbackServerInvoker = BisocketServerInvoker.getBisocketServerInvoker(listenerId);
callbackServerInvoker.createControlConnection(listenerId, true);
}
// Rather than handle the REMOVELISTENER case symmetrically, it is
// handled when a REMOVECLIENTLISTENER message is received by
// BisocketServerInvoker.handleInternalInvocation(). The reason is that
// if the Client executes removeListener() with disconnectTimeout == 0,
// no REMOVELISTENER message will be sent.
}
}
return super.transport(sessionId, invocation, metadata, marshaller, unmarshaller);
}
In particular, the call to callbackServerInvoker.createControlConnection() creates the socket on the client side whose counterpart on the server side should land in the sockets Set. For some reason, that isn't happening. If you can nail that down, then you've got it.
Thank you for letting me know about this issue. Please let me know how your detective work goes, and let me know if you have any questions.
-Ron
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/601555#601555]
Start a new discussion in JBoss Remoting at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&cont...]
12 years, 8 months