2014-11-28 5 views
0

Tomcat에서 작동하는 Java 서블릿을 만들었습니다. 내가 할 모든 web.xml 파일에 다음 코드를 추가/내 톰캣의 lib 폴더에 몇 가지의 .jar 종속성을 배치하고 생성하는 것입니다 : Eclipse EGL on GAE

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 
    <servlet> 
     <servlet-name>egl</servlet-name> 
     <servlet-class>org.eclipse.epsilon.egl.servlet.EglServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>egl</servlet-name> 
     <url-pattern>*.egl</url-pattern> 
    </servlet-mapping> 
</web-app> 

은 내가 index.egl 파일을 배치 내 webapps 디렉토리와 그 .egl 파일을 호출 할 때마다 EglServlet 클래스가 호출됩니다 (이것은 jar 파일 중 하나입니다). Tomcat에서는 모든 것이 잘 작동합니다.

동일한 단계를 거쳐 Google App Engine 및 이후 Heroku 앱을 만들려고했지만 서블릿에 오류가 발생했습니다. index.egl 파일을 일반 텍스트 파일로로드한다는 의미입니다. 따라서 파일의 내용이 [% = "Hello World"%]이면 Hello World 문자열이 정상적인 동작 (Tomcat에서 보이는 동작)으로 인쇄되지 않지만 전체 명령 ([% = "Hello World"%]).

나는 나중에 GAE와 Heroku가 Tomcat이 아니라 Jetty를 사용한다는 것을 알았고, 나는 jar 파일을 delpoing하고 web.xml 코드를 삽입하는 잘못된 단계를 따른다 고 생각한다. webapps 폴더에 index.egl 파일을 저장합니다. webapps 폴더에 WEB-INF 폴더를 만듭니다. 해당 WEB-INF 폴더에있는 모든 jar 파일과 WEB-INF 폴더에 위의 스니 j이있는 web.xml 파일이 들어있는 lib 폴더. jty 파일을 Jetty/lib 폴더에 저장했습니다.

내가 뭘 잘못하고 있니? 파일 배치가 잘못 되었습니까?

답변

0

해결책을 찾았습니다. 분명히 Google App Engine은 처음에 생각한 것처럼 Tomcat이 아닌 Jetty를 사용합니다. Jetty는 Tomcat과 호환되지만 Tomcat 및 Jetty가 URL에서 "/"문자를 처리하는 방식에는 약간의 불일치가있는 것으로 보입니다. 그래서, 올바른 경로로 이끌 기 위해 서블릿의 코드를 변경해야했습니다.