我正在从现有的WSDL和XSD文件开发Java技术的Web服务。 Web服务与具有以“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>
...元素,但它们似乎不起作用。它们被添加到WSDL中的“xsd:schema&gt; xsd:annotation”中。我已经在网上阅读了很多关于该主题的信息,并尝试了其他替代方案,但我没有取得任何成功。
您能否就我可能做错的事情向我提供一些指导或见解,以便我可以在“com.mycompany.projecta”包中生成我的课程并继续我的项目?
谢谢!
答案 0 :(得分:1)
我相信我已经解决了我的问题。我解开了上面的所有内容,并在我的jaxws-build.xml文件中添加了一个“package”属性到我的任务中(我使用ANT来构建项目):
<wsimport package="com.mycompany.projecta" ... >
这会生成“com.mycompany.projecta”下的所有类。
我应该补充一点,我发现这是一个选项: