Java Glassfish—部署具有两个同名函数的WSDL

Java Glassfish—部署具有两个同名函数的WSDL,java,web-services,jax-ws,Java,Web Services,Jax Ws,我正在使用Netbeans创建一个Web服务,代码是用java编写的。我的问题来自于创建2个客户端可以访问的函数。这些函数名称相似,但参数不同 当在war文件中构建web服务时,我没有收到任何抱怨。但是,当将war文件部署到glassfish服务器上时,会出现错误,这会使我得出结论,glassfish在没有查看参数列表的情况下不知何故对两个同名函数感到困惑。这是常见的情况吗?是否有解决办法 例如: @网络方法 公共长线startMission@WebParamname=会话,字符串名称{ ...

我正在使用Netbeans创建一个Web服务,代码是用java编写的。我的问题来自于创建2个客户端可以访问的函数。这些函数名称相似,但参数不同

当在war文件中构建web服务时,我没有收到任何抱怨。但是,当将war文件部署到glassfish服务器上时,会出现错误,这会使我得出结论,glassfish在没有查看参数列表的情况下不知何故对两个同名函数感到困惑。这是常见的情况吗?是否有解决办法

例如:

@网络方法 公共长线startMission@WebParamname=会话,字符串名称{ ..... }

@网络方法 公共长线startMission@WebParamname=会话,Long num{ ..... }


glassfish服务器上的错误返回给我,告诉我第二个StartMission函数不包含参数@Long num的入口点,这告诉我它无法识别同名的两个函数。也许我想得不对。任何帮助、选择、建议都将不胜感激。谢谢

您可以通过指定这两种方法对应的操作来区分它们。这是通过为WebMethod注释指定operationName成员值来完成的

比如说,

@WebMethod(operationName='startMissionWithName') public Long startMission(@WebParam(name="session") Session session, String name{ ..... }

@WebMethod(operationName='startMissionWithId') public Long startMission(@WebParam(name="session") Session session, Long num{ ..... }

客户机是否会在intellisense中看到操作名称,从而导致混淆,或者对用户内部隐藏操作名称?注释中描述的操作名称是生成和发布的WSDL中存在的名称,除非客户机使用不同的WSDL文档。那么,就客户端而言,它现在将看到两个不同的操作。那么添加操作名和只创建两个单独的函数名有什么区别呢?为客户机提供相同的函数名和参数选项会更好,函数调用之外的代码执行将取决于传递的参数。好吧,为了回答这个问题,这里还有一个问题-容器应该如何确定生成的WSDL中操作的名称,更重要的是,如果服务中公开的两个方法具有相同的名称,则将传入请求映射到webmethod注释的方法?您可以发现,有人也遇到过类似的问题:我希望容器,就像一个独立的库一样,能够破译超出名称范围的函数并查看参数列表——但由于某种原因,这是不可能的。我查看了你的链接,解决方案就是你给我的——加入operationName注释。但我认为这并没有什么区别,只是让函数有不同的名称,除非我遗漏了什么。