문제

실행중인 Java 응용 프로그램에 명령을 보내야하는 상황이 있습니다. 이제 TCP/IP 소켓을 사용하여 인터넷 익스플로러 컨텍스트 메뉴 항목을 사용하여 응용 프로그램에 명령을 보냅니다. 그러나 응용 프로그램이 시작하자마자 바이러스 스캐너는 로컬 연결 만 듣고 있지만 응용 프로그램이 청취를 시작했다고 불평합니다. 나는 이것이 사용자에게 혼란 스러울 수 있다고 생각합니다. AV 스캐너를 화나게하지 않고 다른 의사 소통 방법을보고 있습니까?

도움이 되었습니까?

해결책

이를 위해서는 FIFO 대기열을 기반으로 파일을 가장 잘 사용하지 않습니다. 또는 Java Native Access/Java Native Interface를 사용하여 지명 된 파이프 또는 공유 메모리에 쓰기. JNA/JNI 경로를 가면 명명 된 이벤트.

그러나 JNA/JNI 경로를 사용하지 않고 효율성이 좋은 방법으로 원하는 것을 할 수있는 방법이 없을 것입니다.

다른 팁

당신이 사용할 수있는 Java Management Extentions (JMX) 간단한 웹 인터페이스를 통해 실행중인 프로세스에 메소드를 노출합니다.

소켓은 IPC를 수행하는 전통적인 방법이지만 진짜 그들을 피하고 싶어, 당신 ~할 것 같다 로컬 파일 시스템을 사용하여 해결 방법을 찾을 수 있어야합니다. 파일 시스템에서 대기열을 효과적으로 구현하고 싶을 가능성이 높기 때문에 표준 파일 읽기/쓰기를 사용하고 싶지 않을 것입니다.

만약에 파일 시스템을 통해 IPC를 구현하려고했을 때 아마도 sqlite를 사용할 것입니다.컴파일 된 경우 threadSafe가 될 수 있습니다) 각 청취자마다 하나의 테이블이 있습니다. 아마 단일 열 테이블을 사용하여 메시지를 삽입했을 것입니다. 청취자는 가장 낮은 점으로 행을 꺼낼 것입니다. 로드, 그런 다음 삭제 한 행을 삭제합니다.

그러나 저의 접근 방식은 전혀 Java 별이 아니므로 Java (예 : @darthcoder의 응답)를 사용하여 더 나은 방법이있을 수 있습니다.

많은 사람들 이이 시나리오에서 JMS와 같은 것을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top