[OFBiz] Users - How does one keep a sync'd service
fromrescheduling?
A. Zeneski
jaz at ofbiz.org
Wed Aug 25 14:53:34 EDT 2004
And both of these methods are really all in the same. The method on the
dispatcher is a way to force certain instances of a service without
flagging the service in general to run in this way.
This is exactly what it was intended to be used for. :)
On Aug 25, 2004, at 2:41 PM, Mike Baschky wrote:
> Hi Again,
> Ok this issue is solved if you have the services run in different
> transactions. If they run in the same transaction and service A fails
> then the whole thing fails and ofbiz reschedules the originating
> service (B). So there are two ways to solve this. One, in the
> service.xml use the require-new-transaction="true" attribute in the
> service definiton. Two, tell service A to run in a sperate transaction
> by using "dispatcher.runSync( String servicename, Map context, int
> transactiontimeout, boolean requireNewTransaction)" method signature.
> Either one appears to work.
>
> Mike
>
> -----Original Message-----
> From: Mike Baschky
> Sent: Tuesday, August 24, 2004 4:41 PM
> To: users at lists.ofbiz.org
> Subject: [OFBiz] Users - How does one keep a sync'd service
> fromrescheduling?
>
>
> Hi,
> I'll try and keep this from getting to convoluted - what I want to do
> is kick off a sync'd service(A) inside another service (B) and if
> service A fails I want to handle the issue in service B (i.e., I don't
> want ofbiz to reschedule anything). However what I'm finding is that
> when I kick of service B which in turn kicks off service A (sync'd)
> and service A fails ofbiz reschedules Service B??? As a trival
> example:
>
> SERVICE A:
> public static Map retrieveGO50RankReport( DispatchContext dctx, Map
> context ) {
> Map resultMap = new HashMap();
> ((Map) resultMap).put(ModelService.RESPONSE_MESSAGE,
> ModelService.RESPOND_ERROR);
>
> return resultMap;
> }
>
>
>
> SERVICE B:
>
> public static Map failGO50RankReport( DispatchContext dctx, Map
> context ) {
> Map rresultMap = new HashMap();
> LocalDispatcher dispatcher = dctx.getDispatcher();
> try {
>
> rresultMap = dispatcher.runSync("retrieveGO50RankReport",
> context);
> Debug.logInfo("INSIDE THE MAP: "+ rresultMap.toString(), module);
> } catch (GenericServiceException e) {
> //DO nothing
>
> }
> return ServiceUtil.returnSuccess();;
>
> }
>
> When I kick off service B via webtools and A fails I get B being
> rescheduled and an error about 'commit transactions failing with a
> null value.' Looking through the API I don't find a way of telling
> sync'd services not to persist. I do find such abilities in in
> runAsyncWait (dispatcher.runAsyncWait("retrieveGO50RankReport",
> context, false)) and in runAsync
> dispatcher.runAsync("retrieveGO50RankReport", context, false ). As I
> said I'm kicking B off in webtools (job scheduling) for testing
> purposes so is my issue maybe with webtools scheduling or am I missing
> something more basic with Services. Thanks.
>
> Mike
>
> _______________________________________________
> Users mailing list
> Users at lists.ofbiz.org
> http://lists.ofbiz.org/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.ofbiz.org
> http://lists.ofbiz.org/mailman/listinfo/users
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2094 bytes
Desc: not available
Url : http://lists.ofbiz.org/pipermail/users/attachments/20040825/a2cd2dcf/smime.bin
More information about the Users
mailing list