2014-10-29 113 views
2

我有一个项目,同时在Tomcat本地运行,但我打算将来部署到某个服务器。 我有几个问题:Java动态web项目类路径

  1. 我正在使用tomcat-jdbc.jar。我应该如何在项目中包含该jar?将它复制到WEB-INF/lib或添加一个库引用到tomcat?后者是否便携?即使我正在部署的服务器使用jetty,我也可以使用此jar吗?
  2. 当我加入JRE时,eclipse要求我将它指向JRE路径。这是在类路径中添加的行为

classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"

如何从这条线,其中JRE是Eclipse身影了呢?

  1. 将项目部署到服务器时,项目层次结构将如何显示?

我的猜测是:

<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?

回答

0

你的应用程序需要以下三种类型的“资源”

  1. 系统资源:JRE类,由部署在服务器上的一些扩展/库。
  2. 您的依赖关系:您使用的任何库,例如common-utils,poi等。这些JAR文件放在您的web-inf/lib文件夹中
  3. 您的类。这些是在WEB-INF/classes中

因此部署了WAR文件,为您解答:

  1. 如果部署到Tomcat,Tomcat的-了jdbc.jar将提供。尽管照顾版本。如果你的prod服务器是tomcat,但是dev是Jetty,那么你需要在你的本地IDE中提供这个jar,但是不要将它导出到WAR文件中。但是如果你在tomcat上开发并且在其他服务器上部署,那么这个jar必须与你的war文件(web-inf/lib文件夹)捆绑在一起。 Dev和Prod服务器不需要相同,但要注意JRE版本和依赖于Prod服务器提供的库。
  2. JRE是为您的服务器配置的设置,也是你的IDE(Eclipse中)
  3. 项目层次是正确的,但你将最有可能部署为WAR文件,所以您构建文件夹在WEB-INF/classes下出口。您可以使用任何zip编辑器打开WAR文件进行验证。

关于Tomcat的了jdbc.jar 的便携性很不幸,这取决于tomcat的库和版本。这个jar文件可能会有更多的依赖关系,这可能会在稍后导致问题。我建议不要依赖这个jar,除非你打算在tomcat上部署。

0
  1. 您应该使用与生产中要使用的相同服务器测试您的应用程序。
  2. 查看并设置jre属性eclipse-> preferences-> java-> Installed JREs。
  3. 如果您导出一个war文件,WebContent中的所有文件都将处于war中,而来自src文件夹的.class文件将位于WEB-INF/classes中。

当你使用像tomcat这样的服务器时,它使用你设置的配置。

0
  1. 如果您希望应用程序始终引用您的jar,请将其放入web-inf库中。
  2. 正如Daniel在下面提到的,eclipse从首选项标签下的已安装JRE中获取JRE。您可以在eclipse中安装并配置多个JRE,然后为项目单独选择并选择默认值。

3.您的项目层次结构是否正确。运行时将从服务器上设置的JAVA_HOME环境变量中获取JRE。

0

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。