2014-10-29 109 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。