2012-05-07 45 views
0

我剛剛使用eatj.com部署了我的第一個JSF站點。未出現在Tomcat 6.0服務器上的JSF 2.0標籤

我已經在使用glassfish的netbeans上測試了我的應用程序,並且帶有JSF標籤的站點在本地主機上運行良好。

我已經通過ftp將項目文件上傳到tomcat服務器上的webapps director文件夾。

jsp-api.jar文件存在於Tomcat服務器上的/ lib文件中。

當我重新啓動服務器並轉到/webapps/myproject/web/index.xhtml頁面加載但jsf標記不可見時。

我試圖將jar庫複製到/ webapps/myproject/web/WEB-INF/lib /,但沒有任何更改。

也許這與我的主頁是.xhtml而不是.jsf這個事實有關?但我會想,如果它在我的本地主機上工作,那麼它在這臺服務器上工作?

我確定服務器支持JSF,因爲有JSF頁面運行的例子。

任何幫助將不勝感激。

感謝

編輯:

下面是我當前的web.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>faces/index.xhtml</welcome-file> 
</welcome-file-list> 

編輯:

下面是我的catalina.out的文件糊狀用於服務器啓動:

如果請求URL中 web.xmlFacesServlet<url-pattern>匹配0
INFO: Server startup in 1594 ms 
May 7, 2012 1:09:50 PM org.apache.coyote.http11.Http11Protocol pause 
INFO: Pausing Coyote HTTP/1.1 on http-6713 
May 7, 2012 1:09:51 PM org.apache.catalina.core.StandardService stop 
INFO: Stopping service Catalina 
May 7, 2012 1:09:51 PM org.apache.coyote.http11.Http11Protocol destroy 
INFO: Stopping Coyote HTTP/1.1 on http-6713 
May 7, 2012 1:09:57 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: 
May 7, 2012 1:09:57 PM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-6713 
May 7, 2012 1:09:57 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 1017 ms 
May 7, 2012 1:09:57 PM org.apache.catalina.core.StandardService start 
INFO: Starting service Catalina 
May 7, 2012 1:09:57 PM org.apache.catalina.core.StandardEngine start 
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14 
May 7, 2012 1:09:59 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-6713 
May 7, 2012 1:09:59 PM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:4713 
May 7, 2012 1:09:59 PM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/62 config=null 
May 7, 2012 1:09:59 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1580 ms 

回答

1

JSF標籤纔會被處理。您似乎已將其映射到*.jsf上,但index.xhtml<welcome-file>與此不匹配。你有兩個選擇:

  • 地圖上*.xhtml<url-pattern>代替*.jsfFacesServlet。這樣你永遠不需要擺弄虛擬URL。

  • 變化<welcome-file>index.jsf並創建一個空文件index.jsf旁邊index.xhtml在根文件夾來欺騙,它確實存在的服務器,以防止404錯誤。

順便說一句,確認您在Tomcat的/lib已經一個jsp-api.jar文件無關這個問題。首先,這是Tomcat的標準部分,其次,在使用Facelets時根本沒有使用。

最後但並非最不重要的一點,請確保您在其/WEB-INF/lib文件夾中發佈了一個具體的JSF實現以及您的webapp。Tomcat的確是一個簡單的JSP/Servlet容器,即沒有捆綁JSF,而Glassfish是一個完整的Java EE應用服務器。如果您沒有任何文件,download並在部署到Tomcat之前將javax.faces.jar文件放在您的web應用程序的/WEB-INF/lib文件夾中。還要確保你的web.xml被聲明符合Servlet 2.5,因爲Tomcat 6是一個相當舊的版本,它不支持像Glassfish 3那樣的Servlet 3.0。

+0

如果你需要Servlet 3.0,你可以使用Tomcat 7. –

+0

@Mark :確實,但eat4j.com只提供Tomcat 6託管。我個人寧願走到openshift.com。免費雲託管在JBoss AS 7上。 – BalusC

+0

不夠公平。 J2EE規範的重點在於,您可以將您的應用程序從一個規格投訴容器移動到另一個容器 - 挑選最適合您的應用程序。 –