2009-09-17 4 views
1

Eclipse에서 서블릿 클래스가 작동했습니다. App Engine을 사용하여 배포하여 테스트 중이 었으며 웹 응용 프로그램으로 실행하라는 메시지가 표시됩니다. 이제 다른 클래스에서이 코드를 실행하고 싶습니다. 그래서 다른 클래스를 만들고 "TestServlet ts = new TestServlet();" 주요 기능. 내가 그것을 실행할 때 아무 일도 일어나지 않는다. TestServlet의 "doGet"메소드를 호출해야합니까, 아니면 메인 클래스를 웹 애플리케이션으로 실행하지 않는 것과 관련이 있나요?다른 클래스의 서블릿 클래스 실행

답변

0

음 ... 너는 그렇게해서는 안된다. 공통 로직을 별도의 POJO (평범한 자바 객체) 클래스로 추출하여 서블릿과 다른 클래스 모두에서 호출합니다.

서블릿을 수동으로 인스턴스화하거나 호출하는 것은 좋은 생각이 아닙니다.

+0

질문에 대한 답변은 전적으로 귀하가 성취하고자하는 것에 달려 있습니다. 단위 및/또는 구성 요소 테스트의 경우 클래스의 동작은 물론 서비스 계층없이 코드를 테스트합니다. 통합 테스트의 경우, 질문을 묻는 질문이 필요합니다. – Joe

+0

웹 서비스에서 XML 데이터를 추출하는 데 필요한 서블릿 만 있으면됩니다. 그 후에 다른 코드에서 XML을 조작 할 것입니다. 기본적으로 서블릿을 실행하고, XML을 얻고, 가능한 경우 종료하는 것이 좋습니다. 한 클래스 만 실행하려고했지만 웹 응용 프로그램과 Java 응용 프로그램을 별도로 실행해야한다고 말하고 있습니까? 정말 도움을 주셔서 감사합니다. – Mattk

+0

Winstone을 '임베디드'(즉, 코드에서 호출) 할 수 있다고 생각합니다. 별도의 인스턴스가 아니어도됩니다. (웹 서비스에서 XML을 가져 오는 더 좋은 방법이있을 수 있습니다.) – Joe

0

실제 실행하려면 서블릿 컨테이너가 필요합니다. 나는 Winstone http://winstone.sourceforge.net을 사용하여 제안 할 것입니다. 서블릿을 가동시키고 실행하기위한 작고 빠르며 제로 - 설정 컨테이너입니다.

+0

이것은 좋은 대답이 아닙니다. OP_has_ 서블릿 컨테이너가 서블릿을 테스트하면서 App Engine에 배포했습니다. 그렇다고해서 수동으로 서블릿을 인스턴스화하려는 시도가 어떤 식 으로든 용인되지 않습니다. – ChssPly76

+0

그는 GAE에 배치하여 테스트하려고한다고 말합니다. 질문에 대한 나의 해석에서 그는 자신의 컴퓨터에서 서블릿을 실행하려고 시도하고 있는데, 이는 내가 답변을 게시하는 질문이었습니다. – Joe

+0

@ 조 - 질문에 대한 해석이 잘못되었습니다. 저는 서블릿을 테스트하기 위해 GAE 대신 Winstone을 사용하는 것에 대해 아무것도하지 않았습니다. 가장 쉽고 빠릅니다. 하지만 질문은 "어떻게 독립형 자바 애플리케이션의 main() 메소드에서 서블릿을 실행할 수 있는가"이다. 그리고 대답은 "~해서는 안됩니다"입니다. – ChssPly76

0

서블릿 객체의 인스턴스에서 doGet (또는 doPost 또는 다른 보이는 메소드)을 호출하면 포함 코드가 실행됩니다. 그러나 코드에서 "유선"컨텍스트 변수를 사용하는 경우 웹 컨테이너에서 서블릿을 실행하면 동작이 달라질 수 있습니다.

액면 값에서 나는 리팩터링자가 당신이 필요로하는 코드를 일반적인 방법으로 가지고 당신의 서블릿과 메인 클래스 모두로부터 호출 할 것을 제안한다.

관련 문제