Re: [axis2] WSDL and XML Schema Imports
I guess so - it is better to record these issues anyway On 3/7/06, Johan Andersson <[EMAIL PROTECTED]> wrote: > Hello, > > Should I log a JIRA for this? > > Best Regards, > Johan Andersson > > -Original Message- > From: "Johan Andersson" <[EMAIL PROTECTED]> > To: axis-user@ws.apache.org > Date: Wed, 01 Mar 2006 10:48:44 +0100 > Subject: Re: [axis2] WSDL and XML Schema Imports > > Hello Ajith, thank you for responding =) > > WSDL4J picks up the relative path just fine. > The problem is that a relative file path in a application server environment > is not predictable. > > Consider this (I use tomcat as example): > If I start Tomcat from c:\tomcat\bin and then in a servlet (located in say > "c:\tomcat\webapps\axis2") execute the code "new > File("../schemas/someschema.xsd").toURL();" I will get > "file:/C:/tomcat/bin/../schemas/someschema.xsd" > > Looking at the WSDL4J source (not sure if I'm looking at the right version > though) and judging by the error message I get it seems that this is what > happens when Axis2 parses my wsdl. > > As the base URI in this case is not predictable (depends on the servlet > container/application server and how it is started) I have no chance to place > the schemas in a location that they will get picked up by WSDL4J unless I can > somehow specify this location. > > The relative path must work both for WSDL4J parsing the wsdl server-side in > Axis2 and publicly for a consumer of my webservice (relative to the ?wsdl > url). > > I would not mind having to duplicate the schema files (two locations) as long > as they are all located inside my webapp folders. > > Perhaps this could be solved by axis2 specifying a base URI for relative > imports? > > Best Regards, > Johan Andersson > > -Original Message- > From: "Ajith Ranabahu" <[EMAIL PROTECTED]> > To: axis-user@ws.apache.org > Date: Wed, 1 Mar 2006 02:47:54 -0600 > Subject: Re: [axis2] WSDL and XML Schema Imports > > Hi, > Hmmm.. WSDL4J has a method that allows it to use a given base uri but > I'm not sure whether this is the problem. I mean wsdl4j is perfectly > capable of picking up schemas from relative uri's. > I'll try to test this scenario in a test case and let you know. > > Ajith > > On 3/1/06, Johan Andersson <[EMAIL PROTECTED]> wrote: > > Ajith: > > > > Yes, it seems that WSDL4J is used to parse the wsdl serverside after I have > > deployed my service. > > > > The exception originates from: > > com.ibm.wsdl.util.StringUtils.getContentAsInputStream > > > > If I could register a EntityResolver or simply specify a directory where > > WSDL4J should look for the imported schemas so I could use a relative > > schemaLocation it would solve my problem. > > > > Yet another possible solution would be for Axis2 to give me a chance to > > modify the WSDL on the fly _before_ parsing it serverside. > > > > Ali: The problem is that the host is not known when I write or rather > > generate my wsdl so I cannot include the hostname in the schemaLocation so > > no complete URL is possible. > > > > Best Regards, > > Johan Andersson > > > > > > > > -Original Message- > > From: "Ajith Ranabahu" <[EMAIL PROTECTED]> > > To: axis-user@ws.apache.org > > Date: Tue, 28 Feb 2006 22:12:54 -0600 > > Subject: Re: [axis2] WSDL and XML Schema Imports > > > > Hi, > > does the error pop up from WSDL4J ? > > > > On 2/28/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote: > > > Hi Johan, > > > > > > I am not sure if it's a solution to your problem but I use real URL in > > > schemaLocation to get rid of this kind of problems. What I do is defining > > > my > > > target URL in hosts file that maps to localhost. And also, I use Apache > > > Web > > > Server or IIS to host the localhost. For example, assuming you need to > > > make > > > following definition: > > > > > > schemaLocation="http://my.company.com/schemas/myschema.xsd"; > > > > > > I offer you to do the following: > > > > > > 1) Add an entry to the "hosts" file: > > > > > > my.company.com localhost > > > > > > "hosts" file resides under > > > c:\WINDOWS\system32\drivers\etc\ in my Windows XP > > > > > > 2) Install Apache Web Server or IIS. I use Apache. > > > > > > 3)
Re: [axis2] WSDL and XML Schema Imports
Hello, Should I log a JIRA for this? Best Regards, Johan Andersson -Original Message- From: "Johan Andersson" <[EMAIL PROTECTED]> To: axis-user@ws.apache.org Date: Wed, 01 Mar 2006 10:48:44 +0100 Subject: Re: [axis2] WSDL and XML Schema Imports Hello Ajith, thank you for responding =) WSDL4J picks up the relative path just fine. The problem is that a relative file path in a application server environment is not predictable. Consider this (I use tomcat as example): If I start Tomcat from c:\tomcat\bin and then in a servlet (located in say "c:\tomcat\webapps\axis2") execute the code "new File("../schemas/someschema.xsd").toURL();" I will get "file:/C:/tomcat/bin/../schemas/someschema.xsd" Looking at the WSDL4J source (not sure if I'm looking at the right version though) and judging by the error message I get it seems that this is what happens when Axis2 parses my wsdl. As the base URI in this case is not predictable (depends on the servlet container/application server and how it is started) I have no chance to place the schemas in a location that they will get picked up by WSDL4J unless I can somehow specify this location. The relative path must work both for WSDL4J parsing the wsdl server-side in Axis2 and publicly for a consumer of my webservice (relative to the ?wsdl url). I would not mind having to duplicate the schema files (two locations) as long as they are all located inside my webapp folders. Perhaps this could be solved by axis2 specifying a base URI for relative imports? Best Regards, Johan Andersson -Original Message- From: "Ajith Ranabahu" <[EMAIL PROTECTED]> To: axis-user@ws.apache.org Date: Wed, 1 Mar 2006 02:47:54 -0600 Subject: Re: [axis2] WSDL and XML Schema Imports Hi, Hmmm.. WSDL4J has a method that allows it to use a given base uri but I'm not sure whether this is the problem. I mean wsdl4j is perfectly capable of picking up schemas from relative uri's. I'll try to test this scenario in a test case and let you know. Ajith On 3/1/06, Johan Andersson <[EMAIL PROTECTED]> wrote: > Ajith: > > Yes, it seems that WSDL4J is used to parse the wsdl serverside after I have > deployed my service. > > The exception originates from: > com.ibm.wsdl.util.StringUtils.getContentAsInputStream > > If I could register a EntityResolver or simply specify a directory where > WSDL4J should look for the imported schemas so I could use a relative > schemaLocation it would solve my problem. > > Yet another possible solution would be for Axis2 to give me a chance to > modify the WSDL on the fly _before_ parsing it serverside. > > Ali: The problem is that the host is not known when I write or rather > generate my wsdl so I cannot include the hostname in the schemaLocation so no > complete URL is possible. > > Best Regards, > Johan Andersson > > > > -----Original Message- > From: "Ajith Ranabahu" <[EMAIL PROTECTED]> > To: axis-user@ws.apache.org > Date: Tue, 28 Feb 2006 22:12:54 -0600 > Subject: Re: [axis2] WSDL and XML Schema Imports > > Hi, > does the error pop up from WSDL4J ? > > On 2/28/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote: > > Hi Johan, > > > > I am not sure if it's a solution to your problem but I use real URL in > > schemaLocation to get rid of this kind of problems. What I do is defining my > > target URL in hosts file that maps to localhost. And also, I use Apache Web > > Server or IIS to host the localhost. For example, assuming you need to make > > following definition: > > > > schemaLocation="http://my.company.com/schemas/myschema.xsd"; > > > > I offer you to do the following: > > > > 1) Add an entry to the "hosts" file: > > > > my.company.com localhost > > > > "hosts" file resides under > > c:\WINDOWS\system32\drivers\etc\ in my Windows XP > > > > 2) Install Apache Web Server or IIS. I use Apache. > > > > 3) Create the "schemas" folder under htdocs folder of Apache. IIS must have > > its own directory structure. > > > > 4) Put the "myschema.xsd" file under "schemas" folder > > > > 5) When you call > > http://my.company.com/schemas/myschema.xsd URL with your > > browser, it must be there! > > > > Good luck, > > > > Ali Sadik Kumlali > > > > > > Johan Andersson <[EMAIL PROTECTED]> wrote: > > > > Hello, > > > > I'm struggling with schema imports in my wsdl files and would like some > > hints for how to proceed. > > > > The hostname of the target web server/servlet conta
Re: [axis2] WSDL and XML Schema Imports
Hello Ajith, thank you for responding =) WSDL4J picks up the relative path just fine. The problem is that a relative file path in a application server environment is not predictable. Consider this (I use tomcat as example): If I start Tomcat from c:\tomcat\bin and then in a servlet (located in say "c:\tomcat\webapps\axis2") execute the code "new File("../schemas/someschema.xsd").toURL();" I will get "file:/C:/tomcat/bin/../schemas/someschema.xsd" Looking at the WSDL4J source (not sure if I'm looking at the right version though) and judging by the error message I get it seems that this is what happens when Axis2 parses my wsdl. As the base URI in this case is not predictable (depends on the servlet container/application server and how it is started) I have no chance to place the schemas in a location that they will get picked up by WSDL4J unless I can somehow specify this location. The relative path must work both for WSDL4J parsing the wsdl server-side in Axis2 and publicly for a consumer of my webservice (relative to the ?wsdl url). I would not mind having to duplicate the schema files (two locations) as long as they are all located inside my webapp folders. Perhaps this could be solved by axis2 specifying a base URI for relative imports? Best Regards, Johan Andersson -Original Message- From: "Ajith Ranabahu" <[EMAIL PROTECTED]> To: axis-user@ws.apache.org Date: Wed, 1 Mar 2006 02:47:54 -0600 Subject: Re: [axis2] WSDL and XML Schema Imports Hi, Hmmm.. WSDL4J has a method that allows it to use a given base uri but I'm not sure whether this is the problem. I mean wsdl4j is perfectly capable of picking up schemas from relative uri's. I'll try to test this scenario in a test case and let you know. Ajith On 3/1/06, Johan Andersson <[EMAIL PROTECTED]> wrote: > Ajith: > > Yes, it seems that WSDL4J is used to parse the wsdl serverside after I have > deployed my service. > > The exception originates from: > com.ibm.wsdl.util.StringUtils.getContentAsInputStream > > If I could register a EntityResolver or simply specify a directory where > WSDL4J should look for the imported schemas so I could use a relative > schemaLocation it would solve my problem. > > Yet another possible solution would be for Axis2 to give me a chance to > modify the WSDL on the fly _before_ parsing it serverside. > > Ali: The problem is that the host is not known when I write or rather > generate my wsdl so I cannot include the hostname in the schemaLocation so no > complete URL is possible. > > Best Regards, > Johan Andersson > > > > -Original Message- > From: "Ajith Ranabahu" <[EMAIL PROTECTED]> > To: axis-user@ws.apache.org > Date: Tue, 28 Feb 2006 22:12:54 -0600 > Subject: Re: [axis2] WSDL and XML Schema Imports > > Hi, > does the error pop up from WSDL4J ? > > On 2/28/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote: > > Hi Johan, > > > > I am not sure if it's a solution to your problem but I use real URL in > > schemaLocation to get rid of this kind of problems. What I do is defining my > > target URL in hosts file that maps to localhost. And also, I use Apache Web > > Server or IIS to host the localhost. For example, assuming you need to make > > following definition: > > > > schemaLocation="http://my.company.com/schemas/myschema.xsd"; > > > > I offer you to do the following: > > > > 1) Add an entry to the "hosts" file: > > > > my.company.com localhost > > > > "hosts" file resides under > > c:\WINDOWS\system32\drivers\etc\ in my Windows XP > > > > 2) Install Apache Web Server or IIS. I use Apache. > > > > 3) Create the "schemas" folder under htdocs folder of Apache. IIS must have > > its own directory structure. > > > > 4) Put the "myschema.xsd" file under "schemas" folder > > > > 5) When you call > > http://my.company.com/schemas/myschema.xsd URL with your > > browser, it must be there! > > > > Good luck, > > > > Ali Sadik Kumlali > > > > > > Johan Andersson <[EMAIL PROTECTED]> wrote: > > > > Hello, > > > > I'm struggling with schema imports in my wsdl files and would like some > > hints for how to proceed. > > > > The hostname of the target web server/servlet container is not known at the > > time I create my wsdl so I am trying to use a relative schemaLocation > > in my import: > > http://my.domain.com/common/stuff"; > > schemaLocation="../schemas/myschema.xsd" /> > > > > When I de
Re: [axis2] WSDL and XML Schema Imports
Hi, Hmmm.. WSDL4J has a method that allows it to use a given base uri but I'm not sure whether this is the problem. I mean wsdl4j is perfectly capable of picking up schemas from relative uri's. I'll try to test this scenario in a test case and let you know. Ajith On 3/1/06, Johan Andersson <[EMAIL PROTECTED]> wrote: > Ajith: > > Yes, it seems that WSDL4J is used to parse the wsdl serverside after I have > deployed my service. > > The exception originates from: > com.ibm.wsdl.util.StringUtils.getContentAsInputStream > > If I could register a EntityResolver or simply specify a directory where > WSDL4J should look for the imported schemas so I could use a relative > schemaLocation it would solve my problem. > > Yet another possible solution would be for Axis2 to give me a chance to > modify the WSDL on the fly _before_ parsing it serverside. > > Ali: The problem is that the host is not known when I write or rather > generate my wsdl so I cannot include the hostname in the schemaLocation so no > complete URL is possible. > > Best Regards, > Johan Andersson > > > > -Original Message- > From: "Ajith Ranabahu" <[EMAIL PROTECTED]> > To: axis-user@ws.apache.org > Date: Tue, 28 Feb 2006 22:12:54 -0600 > Subject: Re: [axis2] WSDL and XML Schema Imports > > Hi, > does the error pop up from WSDL4J ? > > On 2/28/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote: > > Hi Johan, > > > > I am not sure if it's a solution to your problem but I use real URL in > > schemaLocation to get rid of this kind of problems. What I do is defining my > > target URL in hosts file that maps to localhost. And also, I use Apache Web > > Server or IIS to host the localhost. For example, assuming you need to make > > following definition: > > > > schemaLocation="http://my.company.com/schemas/myschema.xsd"; > > > > I offer you to do the following: > > > > 1) Add an entry to the "hosts" file: > > > > my.company.com localhost > > > > "hosts" file resides under > > c:\WINDOWS\system32\drivers\etc\ in my Windows XP > > > > 2) Install Apache Web Server or IIS. I use Apache. > > > > 3) Create the "schemas" folder under htdocs folder of Apache. IIS must have > > its own directory structure. > > > > 4) Put the "myschema.xsd" file under "schemas" folder > > > > 5) When you call > > http://my.company.com/schemas/myschema.xsd URL with your > > browser, it must be there! > > > > Good luck, > > > > Ali Sadik Kumlali > > > > > > Johan Andersson <[EMAIL PROTECTED]> wrote: > > > > Hello, > > > > I'm struggling with schema imports in my wsdl files and would like some > > hints for how to proceed. > > > > The hostname of the target web server/servlet container is not known at the > > time I create my wsdl so I am trying to use a relative schemaLocation > > in my import: > > http://my.domain.com/common/stuff"; > > schemaLocation="../schemas/myschema.xsd" /> > > > > When I deploy my service, Axis2 will parse this wsdl and try to resolve the > > location of the schema as a file and fail because the "current directory" is > > not anywhere near the webapp folder. > > > > If I give the full URL to the imported schema > > (http://myhost:port/axis2/schemas/myschema.xsd) it works > > like a charm but as I said the hostname is not known at the time I create > > the wsdl so this is not an option. > > > > Is there any way to hook in an Entity Resolver, set some kind of property to > > get the wsdl4j to load schemas of the classpath or even disabling parsing of > > the wsdl:types so I can get this to work please let me know. > > > > Best Regards > > Johan Andersson > > > > > > > > > > > > Yahoo! Mail > > Bring photos to life! New PhotoMail makes sharing a breeze. > > > > > > > -- > Ajith Ranabahu > > > > -- Ajith Ranabahu
Re: [axis2] WSDL and XML Schema Imports
Ajith: Yes, it seems that WSDL4J is used to parse the wsdl serverside after I have deployed my service. The exception originates from: com.ibm.wsdl.util.StringUtils.getContentAsInputStream If I could register a EntityResolver or simply specify a directory where WSDL4J should look for the imported schemas so I could use a relative schemaLocation it would solve my problem. Yet another possible solution would be for Axis2 to give me a chance to modify the WSDL on the fly _before_ parsing it serverside. Ali: The problem is that the host is not known when I write or rather generate my wsdl so I cannot include the hostname in the schemaLocation so no complete URL is possible. Best Regards, Johan Andersson -Original Message- From: "Ajith Ranabahu" <[EMAIL PROTECTED]> To: axis-user@ws.apache.org Date: Tue, 28 Feb 2006 22:12:54 -0600 Subject: Re: [axis2] WSDL and XML Schema Imports Hi, does the error pop up from WSDL4J ? On 2/28/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote: > Hi Johan, > > I am not sure if it's a solution to your problem but I use real URL in > schemaLocation to get rid of this kind of problems. What I do is defining my > target URL in hosts file that maps to localhost. And also, I use Apache Web > Server or IIS to host the localhost. For example, assuming you need to make > following definition: > > schemaLocation="http://my.company.com/schemas/myschema.xsd"; > > I offer you to do the following: > > 1) Add an entry to the "hosts" file: > > my.company.com localhost > > "hosts" file resides under > c:\WINDOWS\system32\drivers\etc\ in my Windows XP > > 2) Install Apache Web Server or IIS. I use Apache. > > 3) Create the "schemas" folder under htdocs folder of Apache. IIS must have > its own directory structure. > > 4) Put the "myschema.xsd" file under "schemas" folder > > 5) When you call > http://my.company.com/schemas/myschema.xsd URL with your > browser, it must be there! > > Good luck, > > Ali Sadik Kumlali > > > Johan Andersson <[EMAIL PROTECTED]> wrote: > > Hello, > > I'm struggling with schema imports in my wsdl files and would like some > hints for how to proceed. > > The hostname of the target web server/servlet container is not known at the > time I create my wsdl so I am trying to use a relative schemaLocation > in my import: > http://my.domain.com/common/stuff"; > schemaLocation="../schemas/myschema.xsd" /> > > When I deploy my service, Axis2 will parse this wsdl and try to resolve the > location of the schema as a file and fail because the "current directory" is > not anywhere near the webapp folder. > > If I give the full URL to the imported schema > (http://myhost:port/axis2/schemas/myschema.xsd) it works > like a charm but as I said the hostname is not known at the time I create > the wsdl so this is not an option. > > Is there any way to hook in an Entity Resolver, set some kind of property to > get the wsdl4j to load schemas of the classpath or even disabling parsing of > the wsdl:types so I can get this to work please let me know. > > Best Regards > Johan Andersson > > > > > > Yahoo! Mail > Bring photos to life! New PhotoMail makes sharing a breeze. > > -- Ajith Ranabahu
Re: [axis2] WSDL and XML Schema Imports
Hi, does the error pop up from WSDL4J ? On 2/28/06, Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote: > Hi Johan, > > I am not sure if it's a solution to your problem but I use real URL in > schemaLocation to get rid of this kind of problems. What I do is defining my > target URL in hosts file that maps to localhost. And also, I use Apache Web > Server or IIS to host the localhost. For example, assuming you need to make > following definition: > > schemaLocation="http://my.company.com/schemas/myschema.xsd"; > > I offer you to do the following: > > 1) Add an entry to the "hosts" file: > > my.company.com localhost > > "hosts" file resides under > c:\WINDOWS\system32\drivers\etc\ in my Windows XP > > 2) Install Apache Web Server or IIS. I use Apache. > > 3) Create the "schemas" folder under htdocs folder of Apache. IIS must have > its own directory structure. > > 4) Put the "myschema.xsd" file under "schemas" folder > > 5) When you call > http://my.company.com/schemas/myschema.xsd URL with your > browser, it must be there! > > Good luck, > > Ali Sadik Kumlali > > > Johan Andersson <[EMAIL PROTECTED]> wrote: > > Hello, > > I'm struggling with schema imports in my wsdl files and would like some > hints for how to proceed. > > The hostname of the target web server/servlet container is not known at the > time I create my wsdl so I am trying to use a relative schemaLocation > in my import: > http://my.domain.com/common/stuff"; > schemaLocation="../schemas/myschema.xsd" /> > > When I deploy my service, Axis2 will parse this wsdl and try to resolve the > location of the schema as a file and fail because the "current directory" is > not anywhere near the webapp folder. > > If I give the full URL to the imported schema > (http://myhost:port/axis2/schemas/myschema.xsd) it works > like a charm but as I said the hostname is not known at the time I create > the wsdl so this is not an option. > > Is there any way to hook in an Entity Resolver, set some kind of property to > get the wsdl4j to load schemas of the classpath or even disabling parsing of > the wsdl:types so I can get this to work please let me know. > > Best Regards > Johan Andersson > > > > > > Yahoo! Mail > Bring photos to life! New PhotoMail makes sharing a breeze. > > -- Ajith Ranabahu
Re: [axis2] WSDL and XML Schema Imports
Hi Johan,I am not sure if it's a solution to your problem but I use real URL in schemaLocation to get rid of this kind of problems. What I do is defining my target URL in hosts file that maps to localhost. And also, I use Apache Web Server or IIS to host the localhost. For example, assuming you need to make following definition:schemaLocation="http://my.company.com/schemas/myschema.xsd"I offer you to do the following:1) Add an entry to the "hosts" file: my.company.com localhost "hosts" file resides under c:\WINDOWS\system32\drivers\etc\ in my Windows XP2) Install Apache Web Server or IIS. I use Apache.3) Create the "schemas" folder under htdocs folder of Apache. IIS must have its own directory structure.4) Put the "myschema.xsd" file under "schemas" folder5) When you call http://my.company.com/schemas/myschema.xsd URL with your browser, it must be there!Good luck,Ali Sadik Kumlali Johan Andersson <[EMAIL PROTECTED]> wrote: Hello, I'm struggling with schema imports in my wsdl files and would like some hints for how to proceed. The hostname of the target web server/servlet container is not known at the time I create my wsdl so I am trying to use a relative schemaLocation in my import: http://my.domain.com/common/stuff" schemaLocation="../schemas/myschema.xsd" /> When I deploy my service, Axis2 will parse this wsdl and try to resolve the location of the schema as a file and fail because the "current directory" is not anywhere near the webapp folder. If I give the full URL to the imported schema (http://myhost:port/axis2/schemas/myschema.xsd) it works like a charm but as I said the hostname is not known at the time I create the wsdl so this is not an option. Is there any way to hook in an Entity Resolver, set some kind of property to get the wsdl4j to load schemas of the classpath or even disabling parsing of the wsdl:types so I can get this to work please let me know. Best Regards Johan Andersson Yahoo! Mail Bring photos to life! New PhotoMail makes sharing a breeze.