Hi All
I am facing one strange problem when trying to define same mapping
name for 2 different classes in 2 different jars and load them using
BindingFactory class. The problem is illustrated as follows:
binding1.xml
-------------------
<?xml version="1.0" encoding="UTF-8"?>
<binding >
<mapping class="com.tri.bs.beans.requestbeans.BRBean" abstract="true">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="CSRRepType" field="csrRepType" usage="optional"
style="element" />
</mapping>
<mapping name="REQUESTDATA"
class="com.tri.bs.beans.requestbeans.DCQVRBean" >
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<collection field="requestEntries" usage="optional"
item-type="com.tri.bs.beans.requestbeans.QVREntry" />
<structure map-as="com.tri.bs.beans.requestbeans.BRBean" />
</mapping>
<mapping name="requestEntries"
class="com.tri.bs.beans.requestbeans.QVREntry">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="ID" field="planID" usage="optional"
style="element"/>
<value name="CLIENTID" field="clientID" usage="optional"
style="element"/>
</mapping>
<mapping name="PLANDATA" class="com.tri.bs.beans.databeans.DCPDEntry">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="ID" field="planId" usage="optional"
style="element" />
<collection field="planValues" usage="optional"
item-type="com.tri.bs.beans.databeans.DCPV" />
</mapping>
<mapping name="planValues" class="com.tri.bs.beans.databeans.DCPV">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="DESCRIPTION" field="description" usage="optional"
style="element" />
</mapping>
<mapping class="com.tri.bs.beans.databeans.BDBean" abstract="true">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="SSN" field="ssn" usage="optional" style="element"
/>
<collection name="PLANDATA" field="planData" usage="optional"
item-type="com.tri.bs.beans.databeans.DCPDEntry" />
</mapping>
<mapping name="DCINFO" class="com.tri.bs.beans.databeans.DCQVDBean" >
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<structure map-as="com.tri.bs.beans.databeans.BDBean" />
</mapping>
</binding>
binding2.xml
------------------
<?xml version="1.0" encoding="UTF-8"?>
<binding >
<mapping class="com.tri.bs.beans.requestbeans.BRBean" abstract="true">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="CSRRepType" field="csrRepType" usage="optional"
style="element" />
</mapping>
<mapping name="REQUESTDATA"
class="com.tri.bs.beans.requestbeans.DCQVRBean" >
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<collection field="requestEntries" usage="optional"
item-type="com.tri.bs.beans.requestbeans.QVREntry" />
<structure map-as="com.tri.bs.beans.requestbeans.BRBean" />
</mapping>
<mapping name="requestEntries"
class="com.tri.bs.beans.requestbeans.QVREntry">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="ID" field="planID" usage="optional"
style="element"/>
</mapping>
<mapping name="PLANDATA" class="com.tri.bs.beans.databeans.DCPDEntry">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="ID" field="planId" usage="optional"
style="element" />
<collection field="planValues" usage="optional"
item-type="com.tri.bs.beans.databeans.DCPV" />
</mapping>
<mapping name="planValues" class="com.tri.bs.beans.databeans.DCPV">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="DESCRIPTION" field="description" usage="optional"
style="element" />
</mapping>
<mapping class="com.tri.bs.beans.databeans.BDBean" abstract="true">
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<value name="SSN" field="ssn" usage="optional" style="element"
/>
<collection name="PLANDATA" field="planData" usage="optional"
item-type="com.tri.bs.beans.databeans.DCPDEntry" />
</mapping>
<mapping name="DCINFO" class="com.tri.bs.beans.databeans.DCQVDBean" >
<namespace uri="http://ws.tri.com/schemas/dcquickvaluews"
default="elements"/>
<structure map-as="com.tri.bs.beans.databeans.BDBean" />
</mapping>
</binding>
As you see in the two binding xml files, I have the mapping name as
"REQUESTDATA" for both the classes
com.tri.bs.beans.requestbeans.DCQVRBean and the class
com.tri.bs.beans.requestbeans.DCQVRBean
Now I followed below steps to deploy the necessary jibx jars into my
EAR deployed on JBoss :
1. Run the JiBX compiler on binding1.xml and jarred the classes into
dcplanlistws.jar
2. Run the JiBX compiler on binding2.xml and jarred the classes into
dcquickvaluews.jar
3. If I run below code
/*********************************************************************************************/
IBindingFactory ibindingFactory =
BindingDirectory.getFactory(com.tri.bluestar.beans.requestbeans.BRBean);
String elementNamesArray[] = s_bindingFactory.getElementNames();
if (elementNamesArray != null) {
for (int i=0; i<elementNamesArray.length; i++) {
System.out.println ("\t
elementNamesArray["+i+"]:"+elementNamesArray[i]);
}
}
else
System.out.println ("\t elementNamesArray is null");
String mappedClassesArray[] = s_bindingFactory.getMappedClasses();
if (mappedClassesArray != null) {
for (int i=0; i<mappedClassesArray.length; i++) {
System.out.println ("\t
mappedClassesArray["+i+"]:"+mappedClassesArray[i]);
}
}
else
System.out.println ("\t mappedClassesArray is null");
String elementNamespacesArray[] = s_bindingFactory.getElementNamespaces();
if (elementNamespacesArray != null) {
for (int i=0; i<elementNamespacesArray.length; i++) {
System.out.println ("\t
elementNamespacesArray["+i+"]:"+elementNamespacesArray[i]);
}
}
else
System.out.println ("\t elementNamespacesArray is null");
String namespacesArray[] = s_bindingFactory.getNamespaces();
if (namespacesArray != null) {
for (int i=0; i<namespacesArray.length; i++) {
System.out.println ("\t
namespacesArray["+i+"]:"+namespacesArray[i]);
}
}
else
System.out.println ("\t namespacesArray is null");
/**********************************************************************************************/
then I always get below output which I think has been deduced from the
classes loaded only from dcplanlistws.jar
but not from dcquickvaluews.jar
/**********************************************************************************************/
elementNamesArray[0]:null
elementNamesArray[1]:REQUESTDATA
elementNamesArray[2]:PLAN
elementNamesArray[3]:planValues
elementNamesArray[4]:null
elementNamesArray[5]:DCINFO
mappedClassesArray[0]:com.tri.bs.beans.requestbeans.BRBean
mappedClassesArray[1]:com.tri.bs.beans.requestbeans.DCPLRBean
mappedClassesArray[2]:com.tri.bs.beans.databeans.DCPDEntry
mappedClassesArray[3]:com.tri.bs.beans.databeans.DCPV
mappedClassesArray[4]:com.tri.bs.beans.databeans.BDBean
mappedClassesArray[5]:com.tri.bs.beans.databeans.DCPLDBean
elementNamespacesArray[0]:null
elementNamespacesArray[1]:http://ws.tri.com/schemas/dcplanlistws
elementNamespacesArray[2]:http://ws.tri.com/schemas/dcplanlistws
elementNamespacesArray[3]:http://ws.tri.com/schemas/dcplanlistws
elementNamespacesArray[4]:null
elementNamespacesArray[5]:http://ws.tri.com/schemas/dcplanlistws
namespacesArray[0]:
namespacesArray[1]:http://www.w3.org/XML/1998/namespace
namespacesArray[2]:http://ws.tri.com/schemas/dcplanlistws
/**********************************************************************************************/
As I see from the above output, I dont find in mapped classes list the
class com.tri.bs.beans.requestbeans.DCQVRBean and also I dont find in
elementNamespaces list the namespace
http://ws.tri.com/schemas/dcquickvaluews for this class.
It seems that the binding factory has been getting its information
only from this jar dcplanlistws.jar but not the form
dcquickvaluews.jar. Why is this so ?
What can I do so that binding factory looks in the other jar and find
my required other classes and their equivalent namespaces ?
Is there any configuration I am doing wrong ?
OfCourse if all options fail then I had to eventually writing a single
binding file but that option I'll choose in the worst cases .
Please suggest ?
Thanks & Regards,
Kumar.
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users