목록💡 백엔드/Java (74)
코딩마을방범대
자바를 통해 서버의 sh 실행 제어하기 자바를 이용해 ssh 에 접속하여 command를 수행할 수 있다. 더불어 파일 업로드, 다운로드도 가능하다! 이번 포스팅에선 ssh에 접속해서 sh파일을 실행하는 로직을 구상해볼 것이다! 사용하기 1. 같은 sweet-rain-kim.tistory.com 이전 포스팅에선 sh 파일을 실행하는 로직을 구성해봤는데 이번 포스팅에선 파일 업로드&다운로드 로직을 테스트 해볼 것이다. 동일하게 JSch를 사용하기 위해 의존성 추가를 해준다. dependencies { implementation 'com.jcraft:jsch:0.1.55' } 세션 설정 public Session getSession(String host, String id, String password) t..
자바를 이용해 ssh 에 접속하여 command를 수행할 수 있다. 더불어 파일 업로드, 다운로드도 가능하다! 이번 포스팅에선 ssh에 접속해서 sh파일을 실행하는 로직을 구상해볼 것이다! 사용하기 1. 같은 서버 내에서 SH파일만 실행하기 다른 서버로는 접근이 불가하고, war 를 구동시킨 현재 서버에만 접근이 가능한 로직이다. 아래 로직은 프로세스 실행 후 출력값을 반환한다. public String serviceShControl(String path, String status) throws IOException { // path엔 "/home/shin/service.sh" 등의 sh 파일 위치를, // status는 start 등의 sh에 존재하는 명령어를 적어주면 된다. ProcessBuilder..
Intellij 에서 프로그램을 구동 시킬 때 타임존 세팅이 필요한 경우가 있다. 이럴 때 Intellij 에서 세팅하는 방법을 알아보자! 우측 상단에 보면 run,debug 여러 버튼이 있는데 이 중에서 프로젝트명 옆에 화살표 버튼을 눌러준다. 그 다음 Edit Configurations... 을 클릭 해준다. 그 다음 프로젝트에서 Modify options를 클릭한 다음 'Add VM options' 를 클릭해준다. VM option 칸에 '-Duser.timezone=UTC' 입력 후 OK를 눌러준다. 이후 디버깅 모드로 확인해보니 정상적으로 반영되었다.
라이브러리 jar 파일을 프로젝트 gradle에 설정해놓는 방법을 알아볼거다! 아래처럼 Project Structure에서 직접 jar 파일을 등록해주는 방법도 있지만, 난독화를 해놓은 경우 제대로 인식이 되지 않는 오류가 발생했다!! 그래서 아래와 같이 프로젝트 폴더 내에 libs라는 폴더를 생성하여 여기 안에 jar 파일을 넣어주면 된다. 그 다음 build.gradle에서 아래와 같이 설정해주면 끝!! dependencies { ... implementation files('libs/파일명.jar') }
war 파일을 디컴파일 할 경우 모든 소스가 오픈되어 코드 탈취의 위험이 있다. 중요한 파일의 경우 디컴파일을 해도 알아볼 수 없게 난독화 하는 것이 권고된다. 디컴파일 프로그램 중에 ProGuard라는 프로그램이 있는데, 진짜 수많은 오류들을 겪었다.. 참고로 나는 1번 방법인 gui로는 실패해서 gradle로 성공했다. 사용하기 1. gui 로 사용하기 1. ProGuard 다운받기 아래 사이트로 접속해서 'Download ProGuard' 를 클릭한다. Java Obfuscator and Android App Optimizer | ProGuard ProGuard is the most popular optimizer and obfuscator for Java bytecode and Android ap..
클라이언트에서 웹소켓 연결을 해제하기 어려운 경우 부득이하게 서버에서 종료를 해줘야하는 경우가 있다.서버에서 해제하는 방법은 추천되지 않는다고 하나, 어쩔 수 없는 경우엔 사용할 수 밖에 없다.. HandshakeInterceptor나 WebSocketMessageBrokerConfigurer 등을 통해 웹소켓 수발신 세팅이 완료되어 있다는 전제 하에 서버에서 웹소켓 연결을 끊는 로직을 구성해볼 것이다. 웹 소켓을 이용한 메시지 전송(백엔드 - SpringBoot)웹 소켓을 이용한 메시지 전송(클라이언트) WebSocket 웹버전의 TCP 또는 Socket 서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술 Real-tsweet-..
HttpURLConnection Java에서 HTTP 프로토콜을 사용하여 웹 리소스에 접근하고 통신하기 위한 클래스 호출하고 응답받기 public void test throws IOException { URL url = new URL("http://javaking75.blog.me/rss"); // 문자열로 URL 표현 System.out.println("URL :" + url.toExternalForm()); // HTTP Connection 구하기 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 요청 방식 설정 ( GET or POST or .. 별도로 설정하지않으면 GET 방식 ) conn.setRequestMethod("..
스케쥴러(Scheduler)에 대하여 스케쥴러란? 일정 시간마다 코드를 실행시킬 수 있음 스레드(sleep)을 이용하면 제대로 관리하지 못할 경우 exception이 날 수 있음 사용법 1. 메인 클래스에 어노테이션 선언 @SpringBootApplication @EnableA sweet-rain-kim.tistory.com 위의 방법대로 @Scheduled를 이용해 반복적인 작업을 수행하는 경우가 있다. 그러나 이 경우엔 cron의 반복 주기를 변경해야될 때 수정 후 war를 재배포해야되는 번거로움이 있다. 동적으로 주기를 선택할 순 없을까 싶어 찾아보니 Quartz를 이용하는 방법이 있다고 한다. Quartz Java 기반의 오픈 소스 스케줄링 라이브러리 다중 작업 지원: Quartz는 여러 작업을 ..