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或更早版本)
或项目属性中的部署程序集 (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。