1. 소개
CRaSH는 JVM에 배포하고 JVM과 상호 작용하는 데 도움이되는 재사용 가능한 쉘입니다.
이 예제에서는 CRaSH를 독립형 애플리케이션으로 설치하는 방법을 살펴 봅니다. 또한 Spring 웹 애플리케이션에 임베드하고 몇 가지 사용자 정의 명령을 작성합니다.
2. 독립형 설치
CRaSH의 공식 웹 사이트 에서 배포판을 다운로드하여 CRaSH를 독립 실행 형 애플리케이션으로 설치해 보겠습니다 .
CRaSH 디렉토리 구조에는 세 가지 중요한 디렉토리 cmd, bin 및 conf가 포함됩니다.
빈 디렉토리는 독립 CLI 스크립트 충돌을 시작하는이 포함되어 있습니다.
cmd를 디렉토리는 상자 밖으로 지원하는 모든 명령을 보유하고 있습니다. 또한 여기에 사용자 지정 명령을 넣을 수 있습니다. 이 기사의 뒷부분에서 이에 대해 살펴 보겠습니다.
CLI를 시작하려면 bin으로 이동 하여 crash.bat 또는 crash.sh 를 사용하여 독립형 인스턴스를 시작합니다 .
3. 스프링 웹 애플리케이션에 CRaSH 포함
CRaSH를 Spring 웹 애플리케이션에 임베드 해 보겠습니다. 먼저 몇 가지 의존성이 필요합니다.
<dependency>
<groupId>org.crashub</groupId>
<artifactId>crash.embed.spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.crashub</groupId>
<artifactId>crash.cli</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.crashub</groupId>
<artifactId>crash.connectors.telnet</artifactId>
<version>1.3.2</version>
</dependency>
Maven Central 에서 최신 버전을 확인할 수 있습니다 .
CRaSH는 Java와 Groovy를 모두 지원하므로 Groovy 스크립트가 작동하려면 Groovy를 추가해야합니다.
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>3.0.0-rc-3</version>
</dependency>
최신 버전은 Maven Central 에도 있습니다 .
다음으로 web.xml에 리스너를 추가해야합니다 .
<listener>
<listener-class>org.crsh.plugin.WebPluginLifeCycle</listener-class>
</listener>
이제 리스너가 준비되었으므로 WEB-INF 디렉토리 에 속성과 명령을 추가해 보겠습니다 . crash 라는 디렉토리를 만들고 그 안에 명령과 속성을 넣을 것입니다.
애플리케이션을 배포하면 텔넷을 통해 셸에 연결할 수 있습니다.
telnet localhost 5000
우리는에 텔넷 포트를 변경할 수 있습니다 crash.properties를 사용하여 파일 crash.telnet.port의 속성을.
또는 속성을 구성하고 명령의 디렉터리 위치를 재정의하기 위해 Spring 빈을 만들 수도 있습니다.
<bean class="org.crsh.spring.SpringWebBootstrap">
<property name="cmdMountPointConfig" value="war:/WEB-INF/crash/commands/" />
<property name="confMountPointConfig" value="war:/WEB-INF/crash/" />
<property name="config">
<props>
<prop key="crash.telnet.port">5000</prop>
</props>
</property>
</bean>
4. CRaSH 및 스프링 부트
Spring Boot는 원격 쉘을 통해 CRaSH를 임베디드 판매로 제공하는 데 사용되었습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>
불행히도 지원은 이제 더 이상 사용되지 않습니다. Spring Boot 애플리케이션과 함께 셸을 계속 사용하려면 연결 모드를 사용할 수 있습니다. 연결 모드에서 CRaSH는 자체가 아닌 Spring Boot 애플리케이션의 JVM에 연결됩니다.
crash.sh <PID>
PID> 는 해당 JVM 인스턴스의 프로세스 ID입니다. jps사용하여 호스트에서 실행중인 JVM의 프로세스 ID를 검색 할 수 있습니다
5. 사용자 지정 명령 만들기
이제 크래시 셸에 대한 사용자 지정 명령을 생성 해 보겠습니다. 명령을 만들고 사용할 수있는 두 가지 방법이 있습니다. 하나는 Groovy를 사용하고 Java도 사용합니다. 하나씩 살펴 보겠습니다.
5.1. Groovy를 사용한 명령
먼저 Groovy로 간단한 명령을 생성 해 보겠습니다.
class message {
@Usage("show my own message")
@Command
Object main(@Usage("custom message") @Option(names=["m","message"]) String message) {
if (message == null) {
message = "No message given...";
}
return message;
}
}
@Command 특수 부호 명령으로 상기 방법은 @Usage는 명령의 사용 및 매개 변수를 표시하기 위해 사용되며, 마지막으로, @option는 매개 변수를 명령에 전달하기위한 것이다.
명령을 테스트 해 보겠습니다.
5.2. Java를 사용한 명령
Java로 동일한 명령을 생성 해 보겠습니다.
public class message2 extends BaseCommand {
@Usage("show my own message using java")
@Command
public Object main(@Usage("custom message")
@Option(names = { "m", "message" }) String message) {
if (message == null) {
message = "No message given...";
}
return message;
}
}
명령은 Groovy의 명령과 유사하지만 여기서는 org.crsh.command.BaseCommand 를 확장해야합니다 .
따라서 다시 테스트 해 보겠습니다.
6. 결론
이 예제에서는 CRaSH를 독립형 애플리케이션으로 설치하여 Spring 웹 애플리케이션에 임베드하는 방법을 살펴 보았습니다. 또한 Java뿐만 아니라 Groovy로 사용자 지정 명령을 만들었습니다.
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/jvm-crash-shell
'Java' 카테고리의 다른 글
MongoDB를 사용한 Spring 세션 (0) | 2021.04.09 |
---|---|
Spring Social을 사용한 보조 Facebook 로그인 (0) | 2021.04.09 |
Spring의 MaxUploadSizeExceededException (0) | 2021.04.09 |
Spring MVC에서 Forms 시작하기 (0) | 2021.04.09 |
AngularJS 및 Spring MVC를 사용한 양식 유효성 검사 (0) | 2021.04.08 |