Я занимаюсь разработкой веб-службы на основе технологий Java из существующих файлов WSDL и XSD.Веб-служба взаимодействует с существующим клиентским приложением, которое имеет пространства имен, начинающиеся с «java:», например targetNamespace = «java: com.mycompany.project». Я не могу изменить пространство имен, используемое клиентом.Я использую NetBeans в качестве своей IDE, и он принимает файлы WSDL и XSD, автоматически генерируя классы через jax-ws.
Поскольку пространство имен начинается с «java:», сервер приложений (в настоящее время я использую Glassfish, но могут использоваться и другие) отклоняет развертывание кода, поскольку пользовательские пакеты не могут находиться под «java».пакет.Ошибка:
Error occurred during deployment: Exception while deploying the app [MyWebService] : Prohibited package name: java.com.mycompany.projecta. Please see server.log for more details.
/NetBeansProjects/MyWebService/nbproject/build-impl.xml:288:
The module has not been deployed.
at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:210)
at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor488.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:284)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:539)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
Чтобы решить эту проблему, я пытаюсь изменить файлы WSDL и XSD на стороне сервера, чтобы создать автоматически созданные классы в другом пакете.Я добавил в WSDL следующее:
<definitions... >
...
<jaxws:bindings>
<jaxws:package name="com.mycompany.projecta"/>
</jaxws:bindings>
</definitions>
Некоторые классы теперь генерируются в пакете "com.mycompany.projecta", но большинство из них - нет.Я попытался добавить ...
<xsd:schemaBindings>
<xsd:package name="com.mycompany.projecta" />
</xsd:schemaBindings>
... элементов, но они не работают.Они были добавлены в «xsd: schema> xsd: annotation» в WSDL.Я прочитал много информации в Интернете по этой теме и пробовал другие варианты, но я не имел никакого успеха.
Не могли бы вы дать мне некоторое руководство или понимание того, что я могу делать неправильно, чтобы я мог генерировать свои классы в пакете "com.mycompany.projecta" и продолжать свой проект?
Спасибо!