gpt4 book ai didi

java - 从 WSDL 和 XSD 文件生成包中不同于命名空间的 Web 服务 Java 类

转载 作者:行者123 更新时间:2023-11-30 11:49:38 27 4
gpt4 key购买 nike

我正在从现有的 WSDL 和 XSD 文件中使用 Java 技术开发 Web 服务。 Web 服务与现有客户端应用程序交互,该应用程序具有以“java:”开头的命名空间,例如targetNamespace="java:com.mycompany.project"我无法更改客户端使用的 namespace 。我使用 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>

...元素,但它们似乎不起作用。它们被添加到 WSDL 中的“xsd:schema > xsd:annotation”。我已经在网上阅读了很多关于该主题的信息并尝试了其他替代方法,但我没有取得任何成功。

能否就我可能做错的地方提供一些指导或见解,以便我可以在“com.mycompany.projecta”包中生成我的类并继续我的项目?

谢谢!

最佳答案

我相信我已经解决了我的问题。我撤销了上面的所有内容,并在我的 jaxws-build.xml 文件中为我的任务添加了一个“package”属性(我正在使用 ANT 构建项目):

<wsimport package="com.mycompany.projecta" ... >

这生成了“com.mycompany.projecta”下的所有类。

我应该补充一点,我通过阅读以下内容发现这是一个选项:

http://jax-ws.java.net/nonav/2.1.1/docs/wsimportant.html

关于java - 从 WSDL 和 XSD 文件生成包中不同于命名空间的 Web 服务 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com