我有一个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
现在,我需要从JavaApplication
引用WebApplication
,以便使用其类处理Web请求。实现这一目标的最佳方法是什么?我的想法是创建.jar
JavaApplication
,其中包含所有.class
个文件,/resources
和/libs
。通过这种方式,我可以在Web应用程序中包含.jar,我可以拥有一个包含整个应用程序的.war
文件。
注意:我不想将Java项目转换为Web项目。
答案 0 :(得分:16)
在Eclipse项目属性中,将项目添加到 Java EE模块依赖项(Eclipse 3.5或更早版本)
项目属性中的
或部署程序集(Eclipse 3.6或更新版本)条目。
这样Eclipse就会注意做正确的事情来创建一个WAR(它将以/WEB-INF/lib
结尾)。不需要其他配置,即使不是在构建路径中摆弄一些。
答案 1 :(得分:15)
在Eclipse下,您可以为给定项目声明项目引用,即您的案例中的Web应用程序。为此,请右键单击您的Web应用程序项目,然后转到属性>项目参考并选择JavaApplication
项目。这应该允许您从JavaApplication
调用WebApplication
项目中的代码,而无需构建WAR。这是开发的解决方案。
对于标准部署(在IDE之外),您确实应该创建标准WAR。为此,您必须将JavaApplication
打包为JAR,包括.class
文件和/resources
下的文件,但不依赖于它的库(/lib
下的JAR)。这些依赖项实际上最终会在WAR的WEB-INF/lib
目录中,而不是JavaApplication
的JAR。这些步骤通常使用Ant或Maven等工具自动执行。
答案 2 :(得分:3)
将Java应用程序连接到Web应用程序以进行开发:
右键点击网络项目:
属性>项目参考>添加要引用的java项目
现在,在web项目的属性选项卡中,转到
属性>部署程序集>手动添加项目并运行应用程序
答案 3 :(得分:2)
如果您的网络容器支持,请考虑升级到EAR级别。
共享代码的棘手部分是应该放置公共代码的位置。复制pr Web应用程序? Web容器中的副本?过度使用“共享这些类”可能会导致类加载器问题。
如果要创建两个单独的 Web应用程序,请将常用Java代码重构为单独的Eclipse项目,并从两个WAR项目中引用它。
编辑:显然我误解了问题描述,并且认为您询问了现有的和新的Web应用程序共享代码。
如果你的应用程序有一个Eclipse项目,而你的web前端有另一个项目,那么你可以让你的应用程序导出必要的资源,Eclipse Java EE中的“Export WAR”可以将其包装在一个jar文件中并放入WEB-INF / lib给你。您需要在Properties - >中使用复选标记明确说明。 Java EE模块Web项目的依赖关系。期待你必须尝试一下 - 这花了我一些时间来学习。
答案 4 :(得分:0)
通常,您将使用Java应用程序中的远程服务bean创建一个API接口,该接口公开您要在Web应用程序中调用的方法。您将在Web应用程序中包含API接口的代理,该Web应用程序在Java应用程序中调用远程服务bean。请记住,您需要在web.xml文件中注册远程bean。