전체 글
-
로컬 시스템 계정으로 실행된 서비스에서 WinRM 사용 시 주의사항Server 2020. 2. 6. 19:24
Windows 환경에서 Jenkins를 서비스로 등록하여 사용하려고 하는데 배포 스크립트에서 오류가 발생했다. 오류 내용은 대략 아래와 같다. Runspace ID: 5116bcb1-0b05-473f-ab49-05c47ad42130 파이프라인 ID: 00000000-0000-0000-0000-000000000000. WSMan에서 오류 코드가 1312인 오류를 보고했습니다. 오류 메시지: 다음 오류 때문에 원격 서버 211.237.13.74에 연결하지 못했습니다. WinRM에서 요청을 처리할 수 없습니다. Negotiate 인증을 사용하는 동안 다음 오류(오류 코드: 0x8009030d )가 발생했습니다. 지정한 로그온 세션이 없습니다. 이미 종료되었을 수도 있습니다. 원인은 서비스의 로그온 계정이 로컬..
-
Spring MVC Controller에서 transaction이 적용되지 않는다. (Self-Invocation)Spring Framework 2019. 10. 11. 15:32
Spring 2.5 버전을 사용중인 프로젝트를 3.2 버전으로 마이그레이션하고 있었다. 모든 XML 기반 설정들을 Java 기반으로 변경하는 작업도 진행했는데, 이 XML 설정은 선언적 트랜잭션 설정도 포함하고 있었다. (CGLIB 사용) 다음과 같이 말이다. 아래는 Java config로 옮긴 모습이다. @Bean public TransactionInterceptor transactionInterceptor(DataSourceTransactionManager transactionManager) { return new TransactionInterceptor(transactionManager, transactionAttributeSource()); } @Bean public TransactionAttri..
-
Windows OpenSSH public-key 인증 실패Server 2019. 9. 30. 12:27
현재 회사에서는 Windows 서버를 사용하고 있다. 최근 진행하고 있는 CI/CD 구축 작업을 위해 SSH 서버를 설치했다. Password Authentication은 SSH 접속 시마다 비밀번호를 입력해야 한다. 배치 파일을 통해 SSH에 접속할 수 있어야 하기 때문에 Public-key Authentication 방식을 사용하기로 했다. 1. 클라이언트에서 public key와 private key 쌍을 생성한다(필자는 ssh-keygen 사용). default로 해당 사용자 디렉터리에 id_rsa(private key, 확장자 없음)와 id_rsa.pub(public key) 파일이 생성된다. 아래 명령을 실행하면 passpharse(key 파일에 설정하는 암호)를 입력할 수 있는데, 해당 ke..
-
Spring Framework 3.x 이하에서 CGLIB proxy 사용 시 에러Spring Framework 2019. 9. 20. 13:50
Spring AOP는 대상 객체를 프록시하기 위해 내부적으로 JDK dynamic proxy 또는 CGLIB를 사용한다. 대상이 최소 하나의 인터페이스를 구현한 객체라면 JDK dynamic proxy를 사용하고, 인터페이스를 구현하지 않은 객체라면 CGLIB proxy가 생성된다. Spring Framework 3.x 이하에서 CGLIB 사용 시 대상 객체가 constructor injection을 사용한다면 아래와 같은 에러가 발생한다. Could not generate CGLIB subclass of class: Common causes of this problem include using a final class or a non-visible class; nested exception is jav..
-
Tomcat OutOfMemoryError 발생 시 자동으로 heap dump 뜨기Apache Tomcat 2019. 8. 30. 15:39
catalina.bat 파일 내 CATALINA_OPTS 변수에 아래 옵션을 추가한다. (Windows 기준) -XX:+Heap-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath={덤프 파일을 저장할 경로} JAVA_OPTS: 변수에 지정된 옵션이 Tomcat을 시작하고 종료하는 명령(start, run, stop)에 전달된다. 변수에 지정된 옵션은 Tomcat과 Java application 모두에서 사용 가능하다. CATALINA_OPTS: 변수에 지정된 옵션이 Tomcat을 시작하는 명령(start, run)에만 전달된다. 변수에 지정된 옵션은 Tomcat에서만 사용 가능하다.