Hello,
I developed a application using Tuscany SCA M3 native and SDO on Ubuntu
9.04. I coded in C++ and actually everything works fine, I am just
facing a performance issue. When I analyzed the code, I discovered that
the following lines use most time, compared to other sections of my program:
//this command executes still fast
DataFactoryPtr mdg = DataFactory::getDataFactory();
//this two lines run very slow
XSDHelperPtr xsh = HelperProvider::getXSDHelper( mdg );
xsh->defineFile("myMessageStruct.xsd");
//and continue fast...
const Type& tmsg = mdg->getType("MyMessageNS","MyMessageType");
The slow part is, when creating a SDO message to send it via a SCA
binding to an other component, so no WebServices or anything else is
included.
I guess the reason is, that the I/O to load the file and process the XML
is causing the delay. As the xsd file is not changing during run time, I
came up with the idea to just load the file once and then keep the
structure in memory. So I tried to save the variable /mdg/ and /xsh/ in
static variables and just load it on the first call. It worked for the
first call, but at the second I got following exception:
Exception in createSdoStructure!
Exception object :
class: SDOUnsupportedOperationException
file name: DataFactoryImpl.cpp
line number: 491
function: "DataFactory::addPropertyToType"
description: Adding Properties after type completed
location history:
terminate called after throwing an instance of 'SDONullPointerException'
Aborted
Obviously it's not working that easily ;)
My question is: is there a way to avoid loading the .xsd file every time
I want to create a SDO message? And if so, how can I do it or where can
I find information?
A second question I have: I built SCA and SDO with the
build_scanative.sh respectively build_sdocpp.sh script and thus without
any custom parameters. While compiling I think I have seen some debug
options. So I am wondering if there are any compiler options to maybe
speed up the application.
Finally I have to mention, that due to project requirements I have to
use tuscany M3.
Thanks for your help in advance!
Best Regards
Michael