Author |
Message
|
sankritya |
Posted: Mon Oct 08, 2012 5:43 am Post subject: Resolved :XSD exists more than once with in Application |
|
|
Centurion
Joined: 14 Feb 2008 Posts: 100
|
Hi All,
I am getting error XSD exists more than once in an Application. I am generated two libraries from 2 set of WSDL and supporting XSD's. Some of the XSD's in both the WSDL are common. Although independently they are not showing any error but after referencing them in a Application both of them are returning error
Quote: |
The file path ABC.xsd exists more than once in the Application MyApp. The file path may only exist once within all projects that are part of an application |
.
I tried deleting the common ABC.xsd from one of the library and creating a project reference from other library but it still does not resolves the error as it is unable to find XSD.
Env : WMB V 8.0.0.1
Last edited by sankritya on Wed Oct 10, 2012 9:59 pm; edited 1 time in total |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 08, 2012 5:51 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
XSD files that do not incorporate namespaces make all variable definitions global thereby causing collisions when the XSD is included by multiple entities.
This is especially true for IBM MDM, and other products, which by default do not use namespaces when it generates the XSDs. The solution for MDM is to use the MDM workbench to generate local namespaces (much like package names in WMB).
Regenerate your XSD and be sure to include a namespace decl for the variable types defined within the XSD. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
sankritya |
Posted: Mon Oct 08, 2012 6:17 am Post subject: |
|
|
Centurion
Joined: 14 Feb 2008 Posts: 100
|
XSD is declared with Namespace and it is same for both as existing XSD has been reused from 1 WSDL to generate the other WSDL. It is kind of a passthrough service where same message is passed to Service provider without any transformation. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 08, 2012 6:19 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
sankritya wrote: |
XSD is declared with Namespace and it is same for both as existing XSD has been reused from 1 WSDL to generate the other WSDL. It is kind of a passthrough service where same message is passed to Service provider without any transformation. |
Therefore, there is no need to import the WSDL twice? Import the WSDL only once. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
sankritya |
Posted: Mon Oct 08, 2012 6:23 am Post subject: |
|
|
Centurion
Joined: 14 Feb 2008 Posts: 100
|
1 of the WSDL exposed by ESB is using some other XSD also for defining the performance parameters. It can not be forced to Service provider application. |
|
Back to top |
|
 |
Vitor |
Posted: Mon Oct 08, 2012 6:46 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
sankritya wrote: |
It is kind of a passthrough service where same message is passed to Service provider without any transformation. |
You can't have "kind of" a passthrough service. Either you're passing the web service call using the gateway mode of the SOAPInput node (in which case the WSDL is not needed) or the SOAPInput node is parsing the service.
If it's the latter, then you need to ensure (force) the XSD(s) used by the WSDLs to play nice, as indicated. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
sankritya |
Posted: Mon Oct 08, 2012 8:52 pm Post subject: |
|
|
Centurion
Joined: 14 Feb 2008 Posts: 100
|
Quote: |
Either you're passing the web service call using the gateway mode of the SOAPInput node (in which case the WSDL is not needed) or the SOAPInput node is parsing the service |
SOAP Input node is parsing the message as validation of message is required.
Quote: |
you need to ensure (force) the XSD(s) used by the WSDLs to play nice, as indicated. |
It means that I can not use it as Passthrough service.javascript:emoticon(' ') I will have to do the mappings just for the sake of namespace. In my opinion it is one of the disadvantage of using Application until it provides a way for doing so.
It could be easily done using message set in V6.1. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Oct 09, 2012 5:43 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
sankritya wrote: |
It could be easily done using message set in V6.1. |
If v6.1 allowed it then that's a "feature" which has now been fixed. The namespace support in v6.1 was much less rich, and hence much less strict.
If you have multiple services with overlapping XSDs and mismatched namespaces that is a design issue with your web services. What you're attempting doesn't sound like it would work happily in any container. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
sankritya |
Posted: Wed Oct 10, 2012 9:58 pm Post subject: |
|
|
Centurion
Joined: 14 Feb 2008 Posts: 100
|
Issue resolved. Imported the second wsdl also in the same library. It just imported the additional xsd files required along with the wsdl. So no conflict. |
|
Back to top |
|
 |
Vibor |
Posted: Sat Sep 26, 2015 5:09 am Post subject: |
|
|
Newbie
Joined: 02 Mar 2015 Posts: 7 Location: Zagreb, Croatia
|
Has anyone managed to solve this problem in another way?
I have two different WSDLs for two different web services. I would like to encapsulate each services into there own library. I would like for each library to contain appropriate message model and subflow for calling the service.
Unfortunately, both message models, when generated, provide same XSD file which causes "Global element exists more than once within the Application" problem when are both referenced by same application or BIP5035E error on deployment referencing integration project.
I've tried to isolate that XSD into separate library and reference that library from both previously created libraries. But then I get errors in WSDLs since they can no longer resolve XSD file location.
How do I keep services separated but usable by other project? |
|
Back to top |
|
 |
timber |
Posted: Sun Sep 27, 2015 12:19 pm Post subject: |
|
|
 Grand Master
Joined: 25 Aug 2015 Posts: 1292
|
Message Broker v8 and IIBv9:
Import the WSDLs into separate message sets. Note that this is the *only* good reason I can think of for using message sets in v8 and v9.
Alternatively, work around the problem by reorganising the schemas to avoid the duplication - but that was suggested already, and you specifically asked for 'another way' to solve the problem.
IIBv10:
Put the WSDLs and their xsds into separate *shared* Libraries. Shared libraries are a new-for-v10 feature that is specifically intended to solve this problem ( among others ). |
|
Back to top |
|
 |
Vibor |
Posted: Sun Sep 27, 2015 1:49 pm Post subject: |
|
|
Newbie
Joined: 02 Mar 2015 Posts: 7 Location: Zagreb, Croatia
|
Thank you for reply. We are currently developing for IIB9 so second option is not available for us now but first is. Thx. |
|
Back to top |
|
 |
|