239.7. usage Samples
239.7.1. Request-Reply 및 serialized 오브젝트 페이로드를 사용하는 UDP Netty 끝점 링크 복사링크가 클립보드에 복사되었습니다!
239.7.2. 일방 통신을 사용하는 TCP 기반 Netty 소비자 끝점 링크 복사링크가 클립보드에 복사되었습니다!
239.7.3. Request-Reply 통신을 사용하는 SSL/TCP 기반 Netty 소비자 끝점 링크 복사링크가 클립보드에 복사되었습니다!
JSSE 설정 사용
Camel 2.9부터 Netty 구성 요소는 Camel JSSE ConfigurationECDHE를 통해 SSL/TLS 구성을 지원합니다. 이 유틸리티는 작성해야 하는 구성 요소 특정 코드의 양을 크게 줄이고 끝점 및 구성 요소 수준에서 구성할 수 있습니다. 다음 예제에서는 Netty 구성 요소에서 유틸리티를 사용하는 방법을 보여줍니다.
구성 요소의 프로그래밍 방식 구성
Spring DSL 기반 엔드 포인트 구성
ECDHEty Component에서 기본 SSL/TLS 구성 사용
SSLSession 및 클라이언트 인증서에 액세스
Camel 2.12에서 사용 가능
클라이언트 인증서에 대한 세부 정보를 가져와야 하는 경우 javax.net.ssl.SSLSession
에 액세스할 수 있습니다. ssl=true
인 경우 Netty 구성 요소는 다음과 같이 Camel Message의 헤더로 SSLSession
을 저장합니다.
SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class); // get the first certificate which is client certificate javax.security.cert.X509Certificate cert = session.getPeerCertificateChain()[0]; Principal principal = cert.getSubjectDN();
SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class);
// get the first certificate which is client certificate
javax.security.cert.X509Certificate cert = session.getPeerCertificateChain()[0];
Principal principal = cert.getSubjectDN();
클라이언트를 인증하기 위해 needClientAuth=true
를 설정해야 합니다. 그렇지 않으면 SSLSession
에서 클라이언트 인증서에 대한 정보에 액세스할 수 없으며 예외 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
. 클라이언트 인증서가 만료되었거나 유효하지 않은 경우에도 이 예외가 발생할 수 있습니다.
sslClientCertHeaders
옵션을 true
로 설정하면 Camel Message를 헤더로 보강하고 클라이언트 인증서에 대한 세부 정보가 있습니다. 예를 들어 제목 이름은 CamelNettySSLClientCertSubjectName
헤더에서 쉽게 사용할 수 있습니다.
239.7.4. 여러 Codecs 사용 링크 복사링크가 클립보드에 복사되었습니다!
특정 경우에는 netty 파이프라인에 인코더 및 디코더 체인을 추가해야 할 수 있습니다. camel netty 엔드포인트에 여러 개의 codecs를 추가하려면 'encoders' 및 'decoders' uri 매개 변수를 사용해야 합니다. 파이프라인에 추가해야 하는 'encoder' 및 'decoder' 매개변수와 마찬가지로 참조( ChannelUpstreamHandler 및 ChannelDownstreamHandlers 목록)를 제공하는 데 사용됩니다. 인코더가 지정되면 인코더 매개변수가 무시되며 디코더 및 디코더 매개 변수가 무시됩니다.
공유 불가능한 인코더/디코더/디코더를 사용하는 방법에 대해 자세히 알아보십시오.
엔드포인트를 생성할 때 이를 해결할 수 있도록 Camel의 레지스트리에 codecs 목록을 추가해야 합니다.
Spring의 네이티브 컬렉션 지원을 사용하여 애플리케이션 컨텍스트에서 codec 목록을 지정할 수 있습니다.
그런 다음 빈 이름을 쉼표로 구분된 목록으로 사용하거나 목록에 포함된 netty 엔드포인트 정의에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.
또는 봄을 통해.