2008-09-20 7 views
1

커맨드 라인에서 웹 애플리케이션의 Java 클래스에 액세스 할 수 있도록 코드를 작성하는 방법은 무엇입니까?커맨드 라인에서 자바 WAR 컨텍스트에서 코드 실행

예. DB에 액세스 할 수있는 webapp의 컨텍스트에서 코드를 실행할 수있는 명령 줄 인터페이스가있는 Java 클래스가 있습니다. Tomcat에서 WARED 응용 프로그램을 호스팅하는 컴퓨터에 로그온하여 상호 작용할 수 있습니다.

어디에서 조사를 시작해야합니까? 이 출력 있다는 명령 줄 인터페이스 클래스 (이것은 System.out에와 System.in 입력 출력을 하드 코딩 할 수 없음)이 입력의 같은 InputStream를 받아 OutputStream를 제공해야

감사

답변

4

WAR에 번들 된 클래스 파일 만 실행 하시겠습니까, 아니면 실제로 실행중인 WAR 인스턴스와 상호 작용 하시겠습니까? 전자의 경우, WAR는 보통의 Jar 파일이며, 다른 Jar 파일과 마찬가지로 클래스를 실행할 수 있습니다.

실행중인 WAR와 상호 작용하려는 경우 JMX를 살펴볼 수 있습니다.

현재 모든 JDK (1.5 이상)는 "무료"로 JMX와 함께 제공됩니다. 작은 인터페이스 클래스를 만들어서 WAR와 상호 작용하는 명령으로 사용하는 것은 쉽습니다.

그런 다음 JMX를 통해 WAR에 연결하는 명령 줄 프로그램을 만들거나 인스턴스와 상호 작용할 수있는 JConsole (JDK와 함께 제공되지만 GUI 임)과 같은 도구를 사용할 수 있습니다. 다른 JMX 클라이언트도 있습니다.

아무도 매력적이지 않으면 항상 웹 서비스가 있습니다.

+0

감사합니다. 내가 찾고있는 것이 좋습니다. JMX는 그때까지 일합니다. 그걸 탐구 할거야. Thks – macarthy

+1

"WAR는 단지 일반적인 Jar 파일이며 다른 다른 Jar 파일과 마찬가지로 클래스를 실행할 수 있습니다."라는 말은 "java -cp foo.war ..."또는 "java- jar foo.war "그리고 jar 파일처럼 작동하게하십시오. 그걸 정말로 할 수 있니? –

0

제안 에 기록됩니다. 그런 다음 특정 포트에서 연결을 수신하는 서버 클래스를 작성해야합니다. 연결이 이루어지면 서버는 연결에서 InputStream을 가져 와서 CommandStream 클래스에 제공하여 작성된 데이터가 연결을 만든 클라이언트에 전달되는 OutputStream을 제공합니다.

관련 문제