2014-09-03 1 views
0

Я разрабатываю веб-сервис через jaxws и Java. У меня есть WSDL, который импортирует XSD, вот фрагмент из моего WSDL. Как вы можете видеть, это довольно стандартно.wsimport не может разобрать XSD - проблема кодирования пути?

<xsd:schema targetNamespace="http://blah.com"> 
<xsd:import schemaLocation="../xsd/myschema.xsd" namespace="http://blah.com"/> 
</xsd:schema> 

Я использую плагин Maven для генерации своих типов с использованием wsimport.

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>jaxws-maven-plugin</artifactId> 
<version>1.12</version> 
<configuration> 
<wsdlDirectory>${basedir}/src/main/wsdl</wsdlDirectory> 
<packageName>com.blah.service.generated</packageName> 
<keep>true</keep> 
<sourceDestDir>${basedir}/target/generated/src/main/java</sourceDestDir> 
</configuration> 
<executions> 
<execution> 
<goals> 
<goal>wsimport</goal> 
</goals> 
</execution> 
</executions> 
</plugin> 

Все работало нормально, когда я строил локально (Windows), все работало нормально в среде, которую мы использовали (Linux). Однако мы переместились в новую среду и видим следующую ошибку.

[ERROR] Unable to parse "file:/xsd/myschema.xsd" : Illegal character in path at index 84: file:/apps/buildeng/workspace/workspace/Blah/Blah/Business%20Blah{PR102483}/BLAGHASFASD/BLALALALALALALAL-Web-Service-Build/src/main/wsdl/mywsdl.wsdl 
    line 13 of file:/apps/buildeng/workspace/workspace/Blah/Blah/Business%20Blah{PR102483}/BLAGHASFASD/BLALALALALALALAL-Web-Service-Build/src/main/wsdl/mywsdl.wsdl 

[ERROR] com.sun.istack.SAXParseException2; systemId: file:/apps/buildeng/workspace/workspace/Blah/Blah/Business%20Blah{PR102483}/BLAGHASFASD/BLALALALALALALAL-Web-Service-Build/src/main/wsdl/mywsdl.wsdl; lineNumber: 13; columnNumber: 89; Unable to parse "file:/xsd/myschema.xsd" : Illegal character in path at index 84: file:/apps/buildeng/workspace/workspace/Blah/Blah/Business%20Blah{PR102483}/BLAGHASFASD/BLALALALALALALAL-Web-Service-Build/src/main/wsdl/mywsdl.wsdl 
    line 9 of file:/apps/buildeng/workspace/workspace/Blah/Blah/Business%20Blah{PR102483}/BLAGHASFASD/BLALALALALALALAL-Web-Service-Build/src/main/wsdl/mywsdl.wsdl 

Я немного искалечил свой путь, чтобы вытащить некоторые важные слова. Путь в этой новой среде значительно дольше, чем раньше, и теперь содержит фигурные фигурные скобки {} - может ли это быть проблемой?

ответ

0

Да, это точно. К сожалению, wsimport не кодирует ваши фигурные фигурные скобки (% 7B для {и% 7D for}).

Я предполагаю, что это ошибка. Путь должен выглядеть /apps/buildeng/workspace/workspace/Blah/Blah/Business%20Blah%7BPR102483%7D/BLAGHASFASD/BLALALALALALALAL-Web-Service-Build/src/main/wsdl/mywsdl.wsdl

Может вы пытаетесь использовать глобальный путь вместо того, чтобы проверять, является ли это проблемой?