在 j2ee java ear 中,在两个不同的库中,我们可以拥有相同的包但具有不同的 类 吗?

In j2ee java ear, in two different libraries, can we have the same package but with different classes?

我在某处读到它是不允许的,现在很难找到为什么?

我们有两个不同的耳朵项目,比如 A 和 B。 对于一个webservice,使用Apache Axis wsdl2java生成的代码,客户端(stub/model)classes在项目A中,服务实现在项目B中。

我不得不重组项目 A 以获得一个包含许多 packages/classes 的新 (maven) 模块,这将创建一个供项目 B 使用的库。现在,由于代码依赖太多,我可以无法从项目 A 中的 module/library 中获取 Web 服务客户端代码(将它们放在项目 A 的其他位置)。

假设网络服务(生成的代码)在包 a.b.c 中。 在生成的代码中,客户端存根和实现 class 都在这个包 a.b.c 中。 现在 (webservice) 实现属于项目 B。 由于我必须在项目A的库中包含客户端classes,并且在项目B中具有服务classes,那么我将有以下情况

库拉入项目 B(来自项目 A): a.b.c/client-classes

项目B本身 a.b.c/implementation class

这样可以吗? 有两次相同的包裹,但有不同的 classes.

如果我们不能有这种情况,那么我们可以在两个单独的包中生成或拥有 web 服务客户端和服务 classes(如 a.b.c.client 和 a.b.c.service) ?

我采用了这种方法,它解决了我的情况。

这是 JAXWS 网络服务 & JDK 8 & JBoss 部署(普通的旧技术和非 spring 环境)。

我使用了自下而上的 Web 服务开发方法(Java 类 首先 - 没有手写 WSDL)。在服务端应用程序中,我编写了接口和实现 类,并使用了最少的注释,如 @WebService 和 @WebMethod。我开发了几个(简单的)模型 类 用于服务方法的参数和结果,但我没有在其中添加任何注释。

然后启动应用程序服务器使 web 服务生效(在某个“URL”)。

利用WSDL(url?wsdl)的URL,我使用wsimport工具生成客户端代码。 注意:我使用-p 选项为客户端代码提供不同的包。然后将客户端代码集成到另一个应用程序中。一切正常。

这种客户端和服务代码位于不同 (Java) 包中的情况,即使采用自上而下(WSDL 优先)方法也有可能,但我无法让它工作。可能需要仔细地手动连接 WSDL 并适当地注释 类.