Java动态web项目类路径
我有一个项目,同时在Tomcat本地运行,但我打算将来部署到某个服务器。 我有几个问题:Java动态web项目类路径
- 我正在使用
tomcat-jdbc.jar
。我应该如何在项目中包含该jar?将它复制到WEB-INF/lib
或添加一个库引用到tomcat?后者是否便携?即使我正在部署的服务器使用jetty,我也可以使用此jar吗? - 当我加入
JRE
时,eclipse要求我将它指向JRE
路径。这是在类路径中添加的行为
classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"
如何从这条线,其中JRE是Eclipse身影了呢?
- 将项目部署到服务器时,项目层次结构将如何显示?
我的猜测是:
<project name>
----<build> (.class files)
----<WebContent>
--------<META-INF>
------------MANIFEST.MF
--------<WEB-INF>
------------<lib>
----------------external_jar.jar
------------web.xml
---------index.html
这是正确的吗?如果是这样,运行时如何知道在哪里可以找到JRE?或Tomcat安装文件夹中的tomcat-jdbc.jar?
你的应用程序需要以下三种类型的“资源”
- 系统资源:JRE类,由部署在服务器上的一些扩展/库。
- 您的依赖关系:您使用的任何库,例如common-utils,poi等。这些JAR文件放在您的web-inf/lib文件夹中
- 您的类。这些是在WEB-INF/classes中
因此部署了WAR文件,为您解答:
- 如果部署到Tomcat,Tomcat的-了jdbc.jar将提供。尽管照顾版本。如果你的prod服务器是tomcat,但是dev是Jetty,那么你需要在你的本地IDE中提供这个jar,但是不要将它导出到WAR文件中。但是如果你在tomcat上开发并且在其他服务器上部署,那么这个jar必须与你的war文件(web-inf/lib文件夹)捆绑在一起。 Dev和Prod服务器不需要相同,但要注意JRE版本和依赖于Prod服务器提供的库。
- JRE是为您的服务器配置的设置,也是你的IDE(Eclipse中)
- 项目层次是正确的,但你将最有可能部署为WAR文件,所以您构建文件夹在WEB-INF/classes下出口。您可以使用任何zip编辑器打开WAR文件进行验证。
关于Tomcat的了jdbc.jar 的便携性很不幸,这取决于tomcat的库和版本。这个jar文件可能会有更多的依赖关系,这可能会在稍后导致问题。我建议不要依赖这个jar,除非你打算在tomcat上部署。
- 您应该使用与生产中要使用的相同服务器测试您的应用程序。
- 查看并设置jre属性eclipse-> preferences-> java-> Installed JREs。
- 如果您导出一个war文件,WebContent中的所有文件都将处于war中,而来自src文件夹的.class文件将位于WEB-INF/classes中。
当你使用像tomcat这样的服务器时,它使用你设置的配置。
- 如果您希望应用程序始终引用您的jar,请将其放入web-inf库中。
- 正如Daniel在下面提到的,eclipse从首选项标签下的已安装JRE中获取JRE。您可以在eclipse中安装并配置多个JRE,然后为项目单独选择并选择默认值。
3.您的项目层次结构是否正确。运行时将从服务器上设置的JAVA_HOME环境变量中获取JRE。
1)池连接,它是Application Server提供的服务(在这种情况下为Tomcat)。恕我直言,你必须避免绑定你的应用程序与特定的实现,在这种情况下,使用泛型javax.sql.DataSource expample,然后“注入”或从服务器查找implmementation。然后如果你使用Jetty,配置你想要的连接池实现https://wiki.eclipse.org/Jetty/Howto/Configure_JNDI_Datasource
所以不要包含在你的web-inf/lib tomcat-jdbc.jar中。
2)“org.eclipse.jdt.launching.JRE_CONTAINER”它是eclipse的一个内部变量,该值是您在eclipse属性中配置的值。它用于eclipse编译和运行你的应用程序。 3)在您的项目结构“.class”文件中,必须在“WEB-INF/classes”中进行。它由servlet规范定义。如果您选择yor项目并右键单击运行“导出” - >“War file”,Eclipse会自动生成正确的结构。或者你可以使用maven。