반응형 개발96 [JAVA] 배치(bat), 쉘(sh) 실행하기 command 창에서만 실행하던 배치 혹은 쉘스크립트 파일을 자바에서 실행해야할 일이 생겨 아래와 같이 작성하였다. result값이 0이면 실행 성공한 것! public boolean runXXXX(String xxxx) { boolean result = false; String filePath = "파일 path"; super.logger.debug("file path : " + filePath); File file = new File(filePath); try { if(file.exists()){ CommandLine cmdLine = CommandLine.parse(filePath+" "+req_id); DefaultExecutor executor = new DefaultExecutor(); try.. 2022. 5. 18. [JAVA] KeyStore에 Root 인증서 등록하기(SSLHandshakeException, PKIXException) 신뢰할 수 있는 기관에서 발급받은 ssl인증서가 아니거나 보편적으로 신뢰할 수 있는 기관이지만 JAVA에서 신뢰하지 못하는 경우 HTTPS통신을 하게 될 때 SSLHandshakeException 혹은 PKIXException 에러가 밸생한다. (해당 exception이 발생한건 TLS버전이 다르다거나.. 다른 이유가 원인일 수도 있지만 본 포스팅에서는 신뢰하지 않는 Root인증서일때에 대해 작성하겠다!) 이 경우 SSL인증서의 상위 인증기관을 JAVA의 keystore에 추가해주어야 한다. 자바의 keystore의경로는 JAVA_HOME/ib/security/cacerts 이다. 방법1. 명령어 이용 keytool -importcert -keystore "cacerts 경로" -storepass "저장.. 2022. 5. 18. certutil.exe로 X.509 인증서 검증하기 certutil.exe를 사용하여 x.509 인증서가 유효한지 검증할 수 있다. (google에 적용된 ssl 인증서를 가지고 테스트를 진행했다.) 1. 인증서 위치하고 있는 경로로 이동 : cd 인증서 경로 2. 인증서 검증 : certutil -v -f -urlfetch -verify 인증서 파일명 인증서 검증 명령어를 입력하면 아래와 같은 결과가 표시된다. 발급자: CN=Thawte TLS RSA CA G1 OU=www.digicert.com O=DigiCert Inc C=US [0,0]: CERT_RDN_PRINTABLE_STRING, 길이 = 2 (2/2 문자) 2.5.4.6 국가/지역 (C)="US" 55 53 US 55 00 53 00 U.S. [1,0]: CERT_RDN_PRINTABLE_.. 2022. 5. 17. [JAVA] Runnable 과 Thread의 차이 위 예제 소스에 있는 Runnable이란 간단하게 말해서 Thread를 인터페이스화한 것인데, Java에서는 다중 상속이 불가능하므로 Thread를 상속 받지 못하는 경우 extends Thread가 아닌 implements로 Runnable로 처리 할 수 있다. extends Thread public class ThreadTest extends Thread { public void run() { System.out.println("thread"); } } ThreadTest threadTest = new ThreadTest(); threadTest.start(); implements Runnable public class ThreadTest implements Runnable { public void .. 2022. 5. 16. [Web] 동기 방식과 비동기 방식의 차이점 동기(synchronous) 방식 요청과 결과가 동시에 일어나는 방식으로 요청을 보낸 후 응답을 받아야 다음 동작이 진행된다. 요청과 결과가 한 자리에 동시에 나타나는 것으로 사용자가 서버로 요청을 보냈을 경우 요청에 대한 응답을 리턴받기 전까지는 다른 것을 하지 못하고 기다려야 한다. 특정 프로그램을 구동시키는 데 시간이 5분 소요된다고 하면, 이 프로그램이 구동되는 5분동안 컴퓨터는 다른 프로그램을 동작시키지 못하고, 구동되기를 기다려야 한다. 장점 : 설계가 간단하고, 직관적이다. 단점 : 요청에 대한 결과가 반환되기 전까지 대기해야 한다. 비동기(Asynchronous) 방식 요청과 결과가 동시에 일어나지 않는 방식으로 요청과 결과가 동시에 일어나지 않는다. 요청한 곳에 결과가 나타나지 않으며, .. 2022. 5. 4. [JAVA] 비동기 처리 방법 - Thread JAVA에서 비동기 처리를 위해 스레드를 사용할 수 있다. 다른 서버로 요청을 보낼 때 비동기 방식을 사용한다면 아래와 같이 작성하면 된다. public void request() { Thread thread = new Thread(new Runnable() { @Override public void run() { //코드 작성 } }); thread.start(); } 하지만 병렬작업 처리량이 많아지면 성능이 저하되는데, 이를 막기 위해서 스레드 풀을 사용해야 한다. 스레드풀은 스레드 개수를 미리 정해 놓고, 작업 큐에 들어오는 요청을 미리 생성해 놓은 스레드들에게 할당하는 방식이다. JDK 1.5부터는 java.util.concurrent Package에 ExecutorService 인터페이스와 Ex.. 2022. 4. 27. [JAVA] java.lang.NoSuchMethodError: org.apache.logging.log4j.Logger.error(Ljava/lang/String;Ljava/lang/Object;)V] 공통 사용되는 기능을 라이브러리로 만들었다. 이 공통 기능을 모아둔 프로젝트의 pom.xml에는 log4j-api.jar를 선언하였고, 이를 이용하여 log를 남겼다. ex) log.error("에러 발생");, log.debug("처리 완료"); 하지만 다른 프로젝트에서 공통 라이브러리를 사용하니 로그를 남기는 부분에서 아래와 같은 에러가 발생하였다. Servlet.service() for servlet [appServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.logging.log4j.Logger.error(Lja.. 2022. 3. 25. [JAVA] HttpClient 로그 남기기, 로그 레벨 제어하기 org.apache.http.client.HttpClient 의 로그가 로깅되지 않아 살펴보니 JCL과 slf4j의 브릿지 역할을 하는 'jcl-over-slf4j' 라이브러리가 빠져있었다. 이 부분에 대한 자세한 설명은 이 블로그를 참고하기! https://dololak.tistory.com/635 pom.xml에 jcl-over-slf4j 라이브러리를 추가해주었고 org.slf4j jcl-over-slf4j ${slf4j.version} log4j2를 사용하고 있었기에 log4j2.xml에 아래와 같이 추가해주었다. 2022. 3. 25. 이전 1 2 3 4 5 6 ··· 12 다음 728x90 반응형