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

Reply via email to