Oracle/TroubleShooting

    weblogic.management.DeploymentException: Application xxxx does not have any Components in it

    WebLogic 12c에서는 다음과 같은 error가 나타는 경우가 있다. weblogic.management.DeploymentException: Application xxxx does not have any Components in it 다음과 같은 issue는 웹로직에 등록된 배포 파일명과 데이터소스 이름이 동일할 경우 발생되는 문제다. config.xml에서 다음과 같이 name을 확인할 수도 있다. 위 2개의 이름이 같을 경우, application과 데이터소스 이름을 변경해서 다시 배포/생성을 해야한다.

    WebLogic 윈도우 서비스 등록 시 JVM 생성 못하는 issue

    환경 : WebLogic 10.3.6 윈도우에 서비스등록 이후 기동할 때 log JVM을 생성하지 못한다는 error log가 나타나면서 웹로직 기동이 되지 않는다. 이때는 JAVA_OPTION "-client" 부분이 문제시 되는 것인데, 64비트 환경의 윈도우에서는 "-server"가 사용되야 한다. 해당 경로의 CmdLine을 수정한다 (-client에서 -server) 이후 기동하면 문제없이 기동되는 것을 확인할 수 있다.

    RotatingFileStreamHandler

    Thread dump 분석 시 RotatingFileStreamHandler 관련하여 thread가 dead lock 된 상태 발견 이는 WebLogic 10.3.6 ~ 12.1.2에 나타나는 bug 중 하나이다. 위 현상은 다음과 같은 이유로 나타나는 에러이다. - 부하가 많을 경우 - 서버 시작 시 서버로그 로테이션이 비활성 상태인 경우 - 서버 log/stdout에 대한 대량의 로깅이 있는 경우 - stdout 로그 가 서버 로그로 리다이렉션 된 경우 JVM 옵션을 주거나 (-Dweblogic.log.RotateLogOnStartup=true), WLST를 통하여 이후 조치가 가능하긴 하나, 위 옵션들이 사전 조취를 취할 수 있는 것은 아니다. Oracle에서는 BUG PATCH 16784672를 ..

    WebLogic Deploy 시 jndi 관련 error

    WebLogic 14c에 spring boot로 개발한 application을 배포할 때, 다음과 같은 error로 배포가 되지 않는 현상. Caused By : javax.naming.NameNotFoundException: Unable to resolve '{JDNI 명} . Resolved ' '; remaining name '{JNDI 명} 위 현상은 war 파일이 배포된 이후, 내려가게 되면 WebLogic에서는 JNDI를 정보를 계속 보유하고 있으나 Spring boot로 개발된 application의 경우 JNDI 정보를 제거하려고 하기 때문에 나타나는 현상으로 보임. (* 위 현상은 JEUS, Tomcat에서는 나타나지 않은 현상이라고 함. WebLogic과 Spring의 충돌(?)로 보임..

    root로 기동 후 일반 계정으로 weblogic 기동 시 에러

    관리자 계정(su)로 weblogic을 기동 ~ 중지 이후, 일반 계정으로 weblogic을 기동하고자 하면 다음과 같은 error가 나타난다. java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot cannot be cast to com.octetstring.vde.backend.standard.BackendStandard 위의 문제는 ldap에서 root 계정으로 실행시켰을때 권한이 바뀐 파일이 존재하기 때문이다. error를 해결하기 위해서는 다음과 같은 작업이 필요하다. ${DOMAIN_HOME}/servers/${SERVER_NAME}/data/ldap/ldapfiles 위 경로의 파일 중 'EmbeddedLDAP.tran' ..

    java.lang.IllegalStateException: EJB010157

    BEA-010157: Only instances of beans with container-managed transaction demarcation can use setRollbackOnly(). 라는 error log가 떨어졌다. 이는 container managed transaction이 활성화 되어 있지 않은 상태에서 EJB에서 setRollbackOnly() 함수를 사용했기에 나타나는 error이다. # container managed transaction이란? - 컨테이너(JEE 서버)가 transaction의 경계, 시작 시간, commit 또는 rollback을 제어하는 위치로 간주된다. 모든 시작, commit 및 rollback 작업이 container에서 처리되며, 프로세스를 제어하기 ..

    java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter

    ==> CGLib의 버전과 ASM의 버전이 맞지 않아서 발생하는 문제 CGLIB이란? CGLIB는 코드 생성 라이브러리로서(Code Generator Library) 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공한다. CGLIB를 사용하면 매우 쉽게 프록시 객체를 생성할 수 있으며, 성능 또한 우수하다. 더불어, 인터페이스가 아닌 클래스에 대해서 동적 프록시를 생성할 수 있기 때문에 다양한 프로젝트에서 널리 사용되고 있다. 예를 들어, Hibernate는 자바빈 객체에 대한 프록시를 생성할 때 CGLIB를 사용하며, Spring은 프록시 기반의 AOP를 구현할 때 CGLIB를 사용하고 있다. 출처: https://itmore.tistory.com/entry/CGLIB-란 [IT모아:티스..

    Broken Pipe

    Backend에서 Broken pipe issue는 다음과 같이 나타날 수 있다. - java.net.SocketException:Broken pipe - java.io.IOException:Broken pipe ============================================================================================ java.net.SocketException:Broken pipe - 잦은 입출력 호출로 발생. 사용자가 처리 중인 요청을 기다리지 않고 새로고침 등으로 재요청을 여러번 보내는 경우에 발생. Socket이 끊어지면서 exception 발생됨. - Web browser가 server에 연결을 하게 되면, 연결된 socket을 Http..