Thanx a lot for all your responses.
First of all I could not find a way to make it go really faster inserting the Byte array into an IData or trying to cast it as a java.lang.Object expecting that IS would not see it as an array. I noticed that removing input byte from the pipeline in that service helped having less “horrible” performance though.
Then I tried to measure what does the curve of processing time look like changing array size :
long measure = System.currentTimeMillis();
IDataUtil.put(idcPipeline, “bytesArray”, Content);
measure = System.currentTimeMillis()-measure;
IDataUtil.put(idcPipeline, “measure”, “” + measure);
But my pipeline showed measure=0 each time. At that point I must admit that for a few seconds I started doubting the System.currentTimeMillis method … but as a matter of fact the IDataUtil.put method itself executes in less than a millisecond.
From there I assumed that waste of time occurs when exiting my java service probably due to internal pipeline management or whatever. Thus I tried to measure it differently calling pub.date:currentDate service before and after my java service. Same story, date2-date1 was less than a second but my flow was still very long to terminate.
Obviously, Ted is right saying “the service exited long before I got a result back in Developer” (same when calling service via the IS web console). But unfortunatly, I do need that array as output for further flow step. I may improve perf by removing that huge array ASAP in my flow but that’s it.
Thnx again. Still searchin …
M.
P.S :
BTW for those who need to publish document from IS 4.6 to ES 5 via B2B bridge here are some tips :
map IS record field to ES document field :
Byte -> byte
Byte -> byte
Double -> double
java.utilData -> BrokerDate
Weird one : if you call an IS service from the B2B adapter from a document containing a byte field you will get a String in the IS pipeline. To retreive your original byte array, you will need to call String.getBytes …
#webMethods#Integration-Server-and-ESB#Flow-and-Java-services