2014-02-14 7 views
0

웹 서비스 (소켓 클라이언트)와 외부 서버간에 소켓 기반 통신을 개발 중입니다. 웹 서비스는 다중 쓰레드 (각 서비스 요청마다 하나의 쓰레드가 생성됨)이기 때문에 각 쓰레드는 외부 서버와 함께 새로운 소켓을 열어야한다. 그렇지 않으면 소켓 클라이언트가 동기화되어 웹 서비스 쓰레드간에 공유되어야한다. 여기에 혼란스러워지고 있습니다. Open Client Socket (Object of java.net.Socket)은 JDBC Connection과 같은 값 비싼 객체이거나 각 스레드에서 열 수 (있어야 함)되며 완료 될 때 스레드에 의해 닫힙니다. 서버에 각 요청에 대해 클라이언트의 새로운 Socket을 만드는 방법에 대해 이야기하는 경우 웹 서비스 기반 소켓 클라이언트

감사

답변

0

도와주세요, 그 그것을 할 올바른 방법입니다.

바로 탭을 사용하는 브라우저도 마찬가지입니다.

Socket이 동기화되어 있으면 스레드 이름/ID의 맵 ​​/ 테이블이 있어야하며 요청 URL 또는 다른 고유 ID 또는 요청이 발생한 스레드와 응답을 식별하는 다른 ID가 있어야한다는 것을 의미합니다 반드시 전달되어야합니다. 이것은 명확하게 케이스 성능 문제 및 확장 할 수 없습니다.

+0

모든 스레드가 동일한 소켓을 공유하는 시나리오에서 blockQueues를 사용할 수 있습니까? 스레드가 요청을 생성하고 응답을 소비 할 수 있기 때문에 싱글 톤 구성 요소에 소켓을 보유하고 "BlockQueues (들어오고 나가는)"두 개가있는 "Soketer"라고 말할 수 있습니까? 발신 대기열의 모든 메시지는 소켓에 기록되고 소켓의 모든 메시지는 수신 대기열로 전송됩니다. 모든 스레드는 Sockert 객체에 대한 참조를 가지고 있습니다. – amique