이틀을 고민했다.
1번 장비에서 tuxedo를 설치하고 기동하여 buildclient, buildserver 를 이용하여 컴파일 후 클라이언트와 서버 프로세스를 각각 실행시켜서 클라이언트가 서버에 있는 서비스를 호출하는 방식이 원활하게 진행되었다.
하지만
2번 장비에서도 tuxedo를 설치하고 기동하여 동일하게 buildclient, buildserver를 해줬고 서비스를 호출하기 위해서
아무리 사용해봐도 서비스 호출이 되지 않았다.
WSNADDR은 1번 장비와 2번 장비, 두 곳 모두 설정이 되지 않았는데 어떻게 1번장비는 바로 서비스를 호출할 수 있었던 걸까?
왜 그런걸까? 잘 모르겠더라...
그래서
오라클 엔지니어 분의 기술블로그에 글을 남겼다.
client가 AP server 단의 service를 직접 함수로 호출하여 가져올 수 있나요? 라는 글의 질문이었다.
답변은
" 우선 턱시도 및 Tmax와 같은 TP 모니터에서 클라이언트 서비스 호출은 TCP를 이용하는 Network 방식과 Shared Memory를 이용하는 Pile 방식이 있습니다. 그렇기 때문에, 클라이언트에 WSNADDR 설정이 없이 서비스를 호출시 성공한 것은 Shared Memory를 이용한 Pipe 방식으로 통신이 되었기 때문입니다.
이와 같은 Shared Memory 방식 경우, Unix/Linux 환경에서는 Permission 영향을 받기 때문에 권한 설정이 중요합니다. "
라고 오셨다.
아 좀 이해됐다!
Shared Memory가 뭔데?
오라클 턱시도 환경변수에서, shared memory는 BB와 WSL의 제어, ISL 프로세스를 위해 사용된다고 한다.
또한 하나의 어플리케이션은 자신의 목적에 따라 shared memory를 사용한다고 한다.
간단하게 설명하면 shared memory는 서로 다른 프로세스 간의 양뱡향 통신을 가능하도록 한다.
그래서 ?
따라서 1번 장비는 shared memory를 통해서 서로 다른 프로세스 간 서비스를 호출하고 받을 수 있었지만 ( 지금 나는 이것을 WSNADDR 역할을 한다고 본다. 개인적인 생각... 더 자세하게 공부하여서 이곳에 정리하겠다.) , 2번 장비에서 서비스를 호출하지 못했던 이유는 WSL과 WSH 접속이 이루어지지 않았던 것이다.
통신을 하지못하면 결국에는 서로 다른 장비에서 같은 AP server 단의 서비스를 호출하지 못한다.
(1번 장비의 AP Server단의 service를 가져오려면 WSH WSL (tcp ip) 통신이 되어야하는데 연결되지 않았기 때문에 서비스 호출이 불가한 것이다)
'Middleware > Tuxedo' 카테고리의 다른 글
[Tuxedo] 서비스 호출하기 (TOLOWER) (0) | 2022.08.30 |
---|---|
[Tuxedo] WSL WSH 띄우기 (client가 WSL를 통해 service를 호출하는 테스트) (0) | 2022.08.29 |
ld: 0711-224 WARNING 에러 (0) | 2022.08.25 |
[Tuxedo] 오라클 설치 / root.sh 와 oraInstRoot.sh 는 무엇인가? (0) | 2022.08.24 |
[Tuxedo] java.lang.UnsatisfiedLinkError 에러 (0) | 2022.08.24 |