Java Web Project引用另一个Java项目

我有一个Java Project ,我现在使用Eclipse的Dynamic Web Project创建一个Web界面。 Web项目由一个servlet和两个JSP 。 像这样的东西:

 /JavaApplication /src /lib /resources /WebApplication /src /Servlet.java /WebContent /WEB-INF index.jsp other.jsp 

现在,我需要从WebApplication引用JavaApplication ,以便使用它的类来处理Web请求。 实现这一目标的最佳方法是什么? 我的想法是创建一个.jar应用程序的.jar ,其中包含所有.class文件, /resources/libs 。 通过这种方式,我可以在Web应用程序中包含.jar,并且我可以拥有一个包含整个应用程序的.war文件。

你怎么看? 这个问题通常如何解决?

注意:我不想将Java项目转换为Web项目。

在Eclipse下,您可以为给定项目声明项目引用 ,在您的案例中为Web应用程序。 为此,右键单击Web应用程序项目,然后转到“ 属性”>“项目引用”并选择JavaApplication项目。 这应该允许您从WebApplication调用JavaApplication项目中的代码,而无需构建WAR。 这是一个发展的解决方案。

对于标准部署 (在IDE之外),您确实应该创建标准WAR。 为此,您必须将JavaApplication打包为JAR,包括.class文件和/resources下的文件,而不是它所依赖的库( /lib下的JAR)。 这些依赖关系实际上最终会在WAR的WEB-INF/lib目录中,而不是JavaApplication的JAR。 这些步骤通常使用Ant或Maven等工具自动完成。

在Eclipse项目属性中,将项目添加到Java EE模块依赖项 (Eclipse 3.5或更早版本)

Java EE模块依赖项

或项目属性中的部署程序集 (Eclipse 3.6或更高版本)条目。

部署大会

这样Eclipse就会注意做正确的事情来创建一个WAR(它将以/WEB-INF/lib结尾)。 不需要其他配置,甚至不需要在Build Path中进行一些调整。

将Java应用程序连接到Web应用程序以进

右键单击Web项目:

properties>项目引用>添加要引用的java项目

现在在web项目的属性选项卡中转到

properties> deployment assembly>手动添加项目并运行应用程序

如果您的Web容器支持,请考虑升级到EAR级别。

共享代码的棘手部分是应该放置公共代码的位置。 复制pr Web应用程序? Web容器中的副本? 过度使用“共享这些类”可能会导致类加载器问题。

如果要创建两个单独的 Web应用程序,请将常用Java代码重构为单独的Eclipse项目,并从两个WAR项目中引用它。


编辑:显然我误解了问题描述,并认为您询问了现有的和新的Web应用程序共享代码。

如果你的应用程序有一个Eclipse项目,而你的web前端有另一个项目,那么你可以让你的应用程序导出必要的资源,Eclipse Java EE中的“Export WAR”可以包装在一个jar文件中并放入WEB-INF中。 / lib给你。 您需要在Web项目的属性 – > Java EE模块依赖项中使用复选标记明确说明。 期待你必须尝试一下 – 这花了我一些时间来学习。

通常,您将使用Java应用程序中的远程服务bean创建API接口,该远程服务bean公开您要在Web应用程序中调用的方法。 您将在Web应用程序中包含API接口的代理,该Web应用程序在Java应用程序中调用远程服务bean。 请记住,您需要在web.xml文件中注册远程bean。