IT/개발

최신 JDK 업데이트로 URL 프로토콜 예외 해결

알콩달콩아빠 2024. 9. 6. 16:29
728x90
반응형

최근에 저는 Fusion Middleware 배포와 관련된 문제를 겪고 있는 고객을 도왔습니다. 설치를 기본 설치와 비교하기 위해 해당 도메인으로 새 설치를 만들었습니다.

설치를 위해 최신 Oracle JDK8, 당시 업데이트 341을 다운로드했는데 현재 351 : https://www.oracle.com/nl/java/technologies/javase/javase8u211-later-archive-downloads.html 입니다.

그러나 AdminServer를 시작하고 로그온을 시도 한 후 LDAP 예외가 발생했습니다. 그것은 다음과 같았습니다.

Caused By: java.lang.IllegalArgumentException: Malformed IPv6 address at index 8:
at java.net.URI.create(URI.java:852)
at com.sun.jndi.ldap.LdapURL.validateURI(LdapURL.java:215)
at com.sun.jndi.ldap.LdapURL.fromList(LdapURL.java:192)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:76)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:694)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)

예외를 검색하면 support.oracle.com 에서 다음 문서를 찾았습니다.

JDK8 업데이트 331+에 따라 URL 처리가 더 엄격하다는 것이 밝혀졌습니다. URL 또는 URI 로케이터를 구성하는 일부 애플리케이션 코드는 전자 URI 일반 구문 표준 RFC 3986(URI 구문 표준)을 준수하지 않는 문자를 사용합니다. 따라서 실제로는 이전 JDK 버전에서 허용 된 잘못된 코딩입니다.

JDK의 다른 GA 버전도 업데이트되지만 Weblogic 및 Fusion Middleware 12.2.1.x의 경우 최신 업데이트인 Oracle JDK8만 지원됩니다. (다른 버전, 심지어 Open JDK 8은 실제로 작동하지 않습니다.)

Fusion Middleware 12.2.1.3 및 12.2.1.4 설치의 경우 지원 문서 ID 2865508.1에 언급된 패치가 있습니다. 적용 가능한 환경에 적용하십시오.

이러한 패치를 적용할 수 없는 경우 환경을 시작하는 명령줄에서 다음 시스템 속성을 사용할 수 있습니다. Weblogic/FusionMiddleware 시작 스크립트를 호출하기 전에 JAVA_OPTIONS 변수에 추가하기만 하면 됩니다.

JAVA_OPTIONS="-Dcom.sun.jndi.ldapURLParsing=\"legacy\" -Dcom.sun.jndi.dnsURLParsing=\"legacy\" -Dcom.sun.jndi.rmiURLParsing=\"legacy\" -Dcom.sun.jndi.corbaURLParsing=\"legacy\" "

그러나 가능한 한 빨리 환경을 업그레이드하십시오.

몇 가지 다른 팁은 다음과 같습니다.

  • 지난 몇 주 동안 WebLogic 설치를 위해 JDK 홈에서 전체 Java 버전을 사용하는 것을 보았습니다. JDK 경로는 Weblogic 또는 FusionMiddleware Infrastructure를 설치하고 도메인을 생성 할 때 생성 된 여러 스크립트에서 사용되므로 JDK 홈에서는 기본 버전 이름 만 사용합니다. 예: /app/oracle/product/java/jdk8. 이것은 JDK8을 업그레이드하는 데 도움이됩니다 : 도메인을 다운 다운시키고 현재 jdk8 폴더를 jdk1.8.0_341와 같은 실제 Java 업데이트를 나타내는 폴더에 백업하십시오. 새 JDK8 버전을 jdk8 위치에 보관 취소합니다. 또는 심볼릭 링크를 사용합니다. 그런 다음 도메인을 다시 시작하기만 하면 됩니다.
  • 같은 이유로 Oracle Homes에 부 버전을 사용하지 않는 경향이 있습니다.
  • 도메인 구성자가 제안한 대로 도메인을 Oracle Home에 배치하지 마십시오. 항상 Oracle Home과 분리된 폴더를 사용합니다. 예: /app/oracle/data/domains/soaosb12c(결합된 soa&osb 도메인의 경우) 또는 /app/oracle/data/domains/mft12c(Managed File Transfer 도메인의 경우).

이 기사는 나 자신에게 보내는 메모이자 독자인 당신을 위한 팁입니다. 문제를 다시 만났을 때 이러한 참조를 다시 찾을 수 있습니다.

 

출처 : 최신 JDK 업데이트로 URL 프로토콜 예외 해결 | 에 의해 Martien van den Akker | 기술을 위한 괴짜 | 보통 (medium.com)

728x90
반응형