2009-09-18 4 views
2

관리되지 않는 dll에 대한 호출을 통해 Java 프로세스와 통신하는 dotnet 프로세스가 있습니다.이 시나리오에서 appdomains가 도움이 될 가능성이 있습니까?

경우에 따라 Java 프로세스가 충돌하여 내 dotnet 프로세스를 다운시킨 것처럼 보입니다. 예외는 발생하지 않으며 프로세스가 종료됩니다. 충돌시 Java는 "hs_err_pid3228"과 같은 이름의 로그 파일을 생성합니다.

관리되지 않는 dll 및 java 프로세스를 제공하는 공급 업체로부터 만족을 얻지 못했지만이 문제를 완화하기 위해 노력하고 있습니다. 자바 프로세스에 대한 호출을 보장 할 필요가 있습니다. 충돌이 발생하면 프로세스를 중단하지 마십시오.

다양한 기사를 읽었을 때 appdomains가 사용 가능성이 높은 후보로 보입니다. Java 프로세스를 호출하고 Java 프로세스를 호출하는 기능을 분리 할 수있는 이론이 있습니다. 별도의 appdomain에서 실행하면 가능합니다. appdomain 다운을 잡아 내지 말고 적어도 그것이 일어 났음을 감지하고 그 기능을 다시 시작하십시오.

비슷한 종류의 문제가있는 사람이 있습니까? 이 접근법은 appdomain의 더 많은 경험을 가진 당신들에게 합리적인 것처럼 보이나요?

가 더욱 재미하려면 자바 충돌 정말 재현되지 않습니다 - 그것은 매우 무작위로 보인다 난 아직도 AppDomain을

답변

1

로 분리하는 것은이 합리적인하는지 테스트하는거야 방법과 싸우고있어 AppDomains를 사용하면 제안한 내용이 적용됩니다.

비슷한 맥락에서 한 번 AppDomains를 사용하여 예외보고 목적으로 충돌하는 단일 응용 프로그램을 만들었습니다. 응용 프로그램 자체가 시작되어 새 AppDomain이 만들어지고 새 AppDomain에서 다시 실행 된 다음 AppDomain에서 실행 중이며 정상적으로 실행 되었음이 감지되었습니다. 해당 AppDomain에서 예외가 발생하면 원래 프로세스에 알리고 오류가 발생한 하위 도메인 보고서를 사용자에게 찢어보고보고할지 여부를 묻고 다시 선택하고 다시 시도합니다.

편집 : 당신이 프로젝트의 Program.cs보고 싶을 경우 내가 여기 다운 제거 버전을 업로드 한 , 당신에게 유리한 출발을 제공합니다. (꽤 길기 때문에 여기에 게시해야한다고 생각하지는 않았습니다.)

+0

감사합니다. 적어도 시도해 볼만한 가치가 있음을 확신합니다. 이제는 최소한 개념을 증명할 시간을 나에게 할당하도록 경영진을 설득해야합니다. – user50380

0

예를 들어, AppDomains를 활용하면 많은 의미가 있습니다.

최근 Windows 서비스를 수정하여 다양한 WCF 서비스를 자체 AppDomain 내에서 작동하는 플러그 인으로로드했습니다. 부트 스트래핑 프로세스에서 MarshalByRefObject 객체를 사용하여 몇 가지 사례를 얻었지만 일단 플러그인이로드되면 WCF를 사용하여 AppDomains 간의 통신이 매우 쉽습니다.

관련 문제