2013-03-28 3 views
0

Tomcat 7.0.29에서 실행되는 JSF 2.0 웹 응용 프로그램을 사용하고 서블릿 3.0 주석을 사용하려고했지만 서블릿이 작동하지 않습니다. 로그가 표시되지 않습니다. init() 메소드로 작성됩니다.Servlet 3.0이 응용 프로그램 시작시로드되지 않습니다.

동일한 문제에 대해 많은 답변을 읽었지만 아직 해결되지 않았습니다.

이를

내 파일은 어떻게 보는가 :

은 web.xml을 :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app metadata-complete="false" 
    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_3_0.xsd" 
    version="3.0"> 
    <display-name>GestionCongesFeki</display-name> 
    <welcome-file-list> 
    <welcome-file>index.xhtml</welcome-file> 
    </welcome-file-list> 
    <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> 


<!-- <servlet> --> 
<!--  <servlet-name>AjaxRelaisServlet</servlet-name> --> 
<!--  <servlet-class>utils.AjaxRelaisServlet</servlet-class> --> 
<!--  <load-on-startup>2</load-on-startup> --> 
<!-- </servlet> --> 
<!-- <servlet-mapping> --> 
<!--  <servlet-name>AjaxRelaisServlet</servlet-name> --> 
<!--  <url-pattern>/AjaxRelaisServlet/*</url-pattern> --> 
<!-- </servlet-mapping> --> 

</web-app> 

pom.xml 파일

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>esprit.pfe2013</groupId> 
    <artifactId>GestionCongesFeki</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>GestionCongesFeki Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

<repositories> 
     <repository> 
      <id>central</id> 
      <name>Maven Repository Switchboard</name> 
      <layout>default</layout> 
      <url>http://repo1.maven.org/maven2</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository>  
     <repository> 
      <id>prime-repo</id> 
      <name>Prime Repo</name> 
      <url>http://repository.primefaces.org</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <name>Maven Plugin Repository</name> 
      <url>http://repo1.maven.org/maven2</url> 
      <layout>default</layout> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
      <releases> 
       <updatePolicy>never</updatePolicy> 
      </releases> 
     </pluginRepository> 
    </pluginRepositories> 

<!-- <repositories> --> 
<!-- <repository> --> 
<!--   <id>central</id> --> 
<!--   <name>Central Repository</name> --> 
<!--   <url>http://repo.maven.apache.org/maven2</url> --> 
<!--   <layout>default</layout> --> 
<!--   <snapshots> --> 
<!--    <enabled>false</enabled> --> 
<!--   </snapshots> --> 
<!--  </repository> --> 


<!-- </repositories> --> 

    <dependencies> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version>   
     </dependency> 



     <!-- PrimeFaces --> 
     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>3.4.1</version> 
     </dependency> 


     <!-- JSF 2 --> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.1.11</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.1.11</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>taglibs</groupId> 
      <artifactId>standard</artifactId> 
      <version>1.1.2</version> 
     </dependency> 




     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.13</version> 
     </dependency> 


     <dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.3</version> 
</dependency> 






    </dependencies> 
    <build> 
    <finalName>GestionCongesFeki</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

서블릿 :

package utils; 

import java.io.IOException; 

import javax.servlet.Servlet; 
import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class AjaxRelaisServlet 
*/ 
@WebServlet("/AjaxRelaisServlet") 
public class AjaxRelaisServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public AjaxRelaisServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see Servlet#init(ServletConfig) 
    */ 
    public void init(ServletConfig config) throws ServletException { 
     System.out.println("This is AjaxRelaisServlet initialisaton !!!"); 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 

실제로 서블릿은 내가 잘했을 때 잘 작동했다. web.xml (주석 코드)에 eclaring하지만 주석을 사용할 때는 그렇지 않습니다. 그건 그렇고,이 문제가 해결 될 때 내가 web.xml을 없앨 수 있는지 알고 싶습니다,하지만 JSF 서블릿이 그것없이 어떻게 선언되는지 모르겠습니다.

도움 주셔서 감사합니다.

+0

어디서 BalusC! 나는 이것에 전문가를 다시 알고있다! :) – Bardelman

+1

그는 당신을들을 수 없습니다. Muahahahahahahahahahahahah> : D – kolossus

+0

u는 나를 도우려는 대신이 andu 웃음을 너무 행복하게 보입니다. D – Bardelman

답변

6

@WebServlet 주석에 loadOnStartup=1 속성을 추가하면 앱 시작시 서블릿이로드됩니다. 이 속성은 web.xml에서 찾을 수있는 <load-on-startup/> 요소와 유사합니다. 당신이 망치가있을 때

@WebServlet(name="AjaxRelaisServlet",loadOnStartup=1,urlPatterns={"/AjaxRelaisServlet"}) 

, 모든 문제는 손톱처럼 보인다. 완전히 web.xml을를 교체하는 문제에

, 당신은 주석 기반 모델은 현재 달성 할 수없는 몇 가지가 있다는 것을 알고 있어야합니다. 예를 들어 필터 순서는 주석만으로는 달성 할 수 없습니다 (AFAIK). 또한 구체적인 구성 문서가 자체 문서화라는 것을 알아야합니다. 시스템 관리자는 web.xml을 한 번 살펴보고 앱에서 무슨 일이 벌어지고 있는지 파악할 수 있습니다. 어노테이션 전용 아키텍처와 대조하십시오. 시스템의 모든 부분에 대한 배선을 파악하는 데는 많은 어려움이 있습니다.

관련 문제