2010-03-22 4 views
6

자바 애플릿이 애플릿이 호스팅 된 페이지의 자바 스크립트 코드와 통신하는 데 문제가 있습니다. 가끔은 작동하지만 다른 경우에는 해결되지 않은 몇 가지 자바 버그 보고서 (썬) 덕분에 인터넷 검색에서 유용한 정보를 찾지 못했다는 모호한 예외가 발생합니다. 여기 자바 애플릿 문제 <--> 자바 스크립트 통신

JSObject win = JSObject.getWindow(this); 
Object[] args = new Object[1]; 
args[0] = "test argument"; 
String result = (String) win.call("testJSfunc", args); // XXX 

내가 // XXX 표시 줄에 얻을 예외 : 여기

내가 사용하고있는 코드입니다. 그것은 간헐적임을 유의하십시오. 흔히 똑같은 코드를 사용하지만 작동하지 않는 경우가 있습니다. 페이지를 반복적으로 다시로드하면 오류가 발생합니다.

netscape.javascript.JSException: No registered plugin for applet ID 1 
    at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source) 
    at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source) 
    at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source) 
    at TestApplet.testCallJS(TestApplet.java:159) 
    at TestApplet.init(TestApplet.java:139) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Java와 Javascript 사이에 더 안정적인 통신 방법이 있습니까? 즉석에서 애플릿을 삽입하는 일에 의해 제공

--- 더 많은 정보

---

것은 내가 deployJava.js 스크립트를 사용하고 있습니다. MAYSCRIPT가 활성화되었는지 확인했습니다. MAYSCRIPT는 문제가 아니라는 것을 알고 있습니다. 왜냐하면 통신은 어느 정도 시간이 걸리기 때문입니다.

+0

애플릿 태그를 사용하여 삽입하고 있습니까? – Enrique

답변

1

내가 classloader_cache=falseseparate_jvm=true를 설정하여 문제를 해결했다고 생각 ... 한 번 나는 그 모두를 설정, 간헐적 모호한 오류가 발생 멈췄다. 잘하면이 문제를 해결할 수 있기를 바랍니다.

+0

불행히도이 솔루션 원인 애플릿은 완전히 무국적입니다. 모든 정적 변수는 페이지를 다시로드하거나 새로 고친 후 지워집니다. –

1

애플릿 태그에 MAYSCRIPT가 있는지 확인하십시오.

<applet id="..." code="..." name=".." codebase="..." archive="..." width="100%" height="100%" MAYSCRIPT> 
+0

예, 있습니다. 예외가 간헐적이기 때문에 MAYSCRIPT는 문제가 아니어야합니다. 어떤 때는 작동하지만 어떤 때는 코드를 변경하지 않고 페이지를 다시로드하기 만합니다. MAYSCRIPT가 문제라면, 그것은 통신을 100 % 차단할 것입니다. – davr

+0

MAYSCRIPT는 PlugIn2에서 무시됩니다. 어쨌든 모든 브라우저에서 제대로 작동하지 않았습니다. –

+0

Google 1.6.10에서 도입 된 새로운 플러그인 아키텍처에 몇 가지 버그가 있는지, Google에서 'plugin2'로 재미있어하고 있는지 궁금합니다. – davr

0

separate_jvm을 true로 설정하면 새 Java VM이 모든 애플릿에 대해 인스턴스화되므로 성능에 매우 나쁜 영향을 미칩니다. 페이지에 애플릿이 여러 개있는 경우 (30 개 이상) 상당히 느립니다.

이 문제에 대한 다른 해결책이 있는지 궁금합니다. 예를 들어 여러 탭에 여러 개의 애플릿이 있습니다. 애플릿이있는 첫 번째 탭이 열리면 모든 애플릿이 문제없이 올바르게 표시됩니다. 그러나 등록 된 플러그인에 대한 오류로 다른 탭 결과로 전환하십시오. IE에서는 IE에 모든 애플릿이 DOM에 추가 될 때 즉시 인스턴스화되기 때문에이 오류가 발생하지 않습니다.