ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » ESQL vs Java (MBelement)

Post new topic  Reply to topic
 ESQL vs Java (MBelement) « View previous topic :: View next topic » 
Author Message
Gama
PostPosted: Wed Feb 27, 2013 10:15 am    Post subject: ESQL vs Java (MBelement) Reply with quote

Centurion

Joined: 11 Jan 2005
Posts: 103
Location: Portugal

I'm in trouble with message broker and java, so could any one help me?

Resuming i need to call a Java method from ESQL, that one of the parameter is INOUT with the MBelement type

After consulting ESQL-to-Java data-type documented in ("http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wmb_v6/wmb/6.0/ApplicationDevelopment/ESQL_Capabilities/Ext_Functions_Java/player.html") mapping table I need to pass a ESQL referece (Message Tree) to Java to be updated from Java method an then returned back to ESQL to continue the flow.

I think is possible or no?

ESQL Code:
Quote:
SET OutputLocalEnvironment.VAR1.AAA = '1234';

SET OutputRoot.XML.VAR2.AAA = '1';
SET OutputRoot.XML.VAR2.AAB = '2';
SET OutputRoot.XML.VAR2.AAC = '3';

CALL MBelement01(OutputLocalEnvironment.VAR1.AAA, OutputRoot.XML.VAR2);

CREATE PROCEDURE MBelement01(IN P1 CHAR, INOUT refVar REFERENCE)
LANGUAGE JAVA
EXTERNAL NAME "ls.mbelement.Test_MBelement.CallMBelement01";



Java Code:
Quote:
package ls.mbelement;

import com.ibm.broker.plugin.MbElement;

/**
* @author NRGama
*
*/
public class Test_MBelement {
public static void CallMBelement01(String lang, MbElement[] mbe) {
}
}

I always receve the follow error:

Quote:
RecoverableException
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:Java.javaCall01_Call_Java01.Main
Insert
Type:INTEGER:5
Text:CHARACTER:12.3
Insert
Type:INTEGER:5
Text:CHARACTER:MBelement01(OutputLocalEnvironment.VAR1.AAA, OutputRoot.XML.VAR2.AAA);
RecoverableException
File:CHARACTER:F:\build\slot2\S800_EP\src\DataFlowEngine\ImbRdl\ImbRdlRoutine.cpp
Line:INTEGER:2477
Function:CHARACTER:SqlRoutine::clearDownChildEnv
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPmsgs
Severity:INTEGER:3
Number:INTEGER:2933
Text:CHARACTER:
Insert
Type:INTEGER:5
Text:CHARACTER:refVar


Any ideas?

Thanks
Back to top
View user's profile Send private message
adubya
PostPosted: Wed Feb 27, 2013 10:34 am    Post subject: Reply with quote

Partisan

Joined: 25 Aug 2011
Posts: 377
Location: GU12, UK

When invoking, try

Code:

SET OutputLocalEnvironment.VAR1.AAA = '1234';

SET OutputRoot.XML.VAR2.AAA = '1';
SET OutputRoot.XML.VAR2.AAB = '2';
SET OutputRoot.XML.VAR2.AAC = '3';
DECLARE testRef REFERENCE TO OutputRoot.XML.VAR2;

CALL MBelement01(OutputLocalEnvironment.VAR1.AAA, testRef );
Back to top
View user's profile Send private message Send e-mail
fjb_saper
PostPosted: Wed Feb 27, 2013 9:38 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Generally an IN will be enough. Reference type in Java is I believe MbElement.

With more insight into your code you will get more specific answers...

So the java signature should be:
mymethod(String mystringval, MbElement sometreeref)

And in ESQL
CREATE PROCEDURE myproc( IN myvalue CHARACTER, IN myref REFERENCE) language....

Note you should only use INOUT on a ref if you cannot solve the problem with IN only.(i.e. you are returning a reference that points to somewhere else).

Have some fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
Gama
PostPosted: Thu Feb 28, 2013 7:13 am    Post subject: Reply with quote

Centurion

Joined: 11 Jan 2005
Posts: 103
Location: Portugal

Hi,

Tkanks a lot to both fo you, I got it.

ESQL

Quote:
SET OutputLocalEnvironment.VAR1.AAA = '1234';

SET OutputLocalEnvironment.MBelement.VAR2 = '#';
SET OutputLocalEnvironment.MBelement.VAR2[1].a = '##';
SET OutputLocalEnvironment.MBelement.VAR2[1].b = '###';
SET OutputLocalEnvironment.MBelement.VAR2[2].a = '####';
SET OutputLocalEnvironment.MBelement.VAR2[2].b = '#####';


DECLARE xmlRef REFERENCE TO OutputLocalEnvironment.MBelement;


JAVA
Quote:
public static void CallMBelement01(String lang, MbElement[] mbe) {

try { MbElement m = mbe[0].getFirstChild();
String a;
a = m.getName();
mbe[0].createElementAsFirstChild(MbElement.TYPE_NAME, "AA", "a1");
mbe[0].createElementAsLastChild(MbElement.TYPE_NAME, "AB", "a2");

} catch (MbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}



Many thaks.
Back to top
View user's profile Send private message
nits_018
PostPosted: Sat Mar 02, 2013 5:14 am    Post subject: Need code snippet and help for the same Reply with quote

Apprentice

Joined: 24 Oct 2012
Posts: 34

@gama Will the above function works if we defined the Ref to Output root instead of Output Local Environment..just curious to know and of no can you tell the exact reason for the same.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » ESQL vs Java (MBelement)
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.