2011-11-21 69 views
0

我有一臺Web服務在一臺機器上運行,我想通過Applet訪問該Web服務。獨立的Applet完美無瑕地運行。但是,當我將該applet嵌入到html文件中時,真正的問題就開始了。由於某些客戶端限制,我需要將小程序嵌入到Html文件中。當我打開html頁面但不訪問Web服務時,applet開始。嵌入在HTML中的JAVA Applet在操作過程中掛起

我知道Applet必須簽名才能訪問所有可用的資源。我已經簽署了罐子,但它仍然掛起。爲了解決這個問題,我想到了監視從Web服務運行的客戶端到服務器的網絡流量。我發現有一些區別..當我運行獨立的JAVA Applet(JAR文件)時:它調用精確的Web服務鏈接並獲取響應。另一個最重要的要注意的是,它調用javaw.exe和完美的POST請求(下面顯示的第三個請求)。

javaw.exe 172.22.1.98 SANKET-BA4C8C90  TCP TCP:Flags=...A..S., SrcPort=HTTP Alternate(8080), DstPort=3868, PayloadLen=0, Seq=271218130, Ack=957649749, Win=65535 (Scale factor not supported) = 65535 {TCP:1, IPv4:15} 

javaw.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...., SrcPort=3868, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=957649749, Ack=271218131, Win=65535 (scale factor 0x0) = 65535 {TCP:1, IPv4:15} 

javaw.exe SANKET-BA4C8C90  172.22.1.98 HTTP HTTP:Request, POST /LEDLabServer/services/Blink  {HTTP:2, TCP:1, IPv4:15} 

javaw.exe 172.22.1.98 SANKET-BA4C8C90  TCP TCP:Flags=...A...., SrcPort=HTTP Alternate(8080), DstPort=3868, PayloadLen=0, Seq=271218131, Ack=957650035, Win=65249 (scale factor 0x0) = 65249 {TCP:1, IPv4:15} 

javaw.exe SANKET-BA4C8C90  172.22.1.98 SOAP SOAP:xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" {HTTP:2, TCP:1, IPv4:15} 

javaw.exe 172.22.1.98 SANKET-BA4C8C90  SOAP SOAP:xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" {HTTP:2, TCP:1, IPv4:15} 

javaw.exe 172.22.1.98 SANKET-BA4C8C90  TCP TCP:Flags=...A...F, SrcPort=HTTP Alternate(8080), DstPort=3868, PayloadLen=0, Seq=271218757, Ack=957650351, Win=64933 (scale factor 0x0) = 64933 {TCP:1, IPv4:15} 

javaw.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...., SrcPort=3868, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=957650351, Ack=271218758, Win=64909 (scale factor 0x0) = 64909 {TCP:1, IPv4:15} 

javaw.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...F, SrcPort=3868, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=957650351, Ack=271218758, Win=64909 (scale factor 0x0) = 64909 {TCP:1, IPv4:15} 

當我運行嵌入在HTML文件中的同一個applet:我得到不同的結果,其中,它調用的java.exe,並呼籲不當鏈接到網絡服務獲取(指着serviceexception.class而不是POST/LEDLabServer /服務/閃爍)

java.exe SANKET-BA4C8C90  172.22.1.98 HTTP HTTP:Request, GET /LEDLabServer/sampleBlinkProxy/javax/xml/rpc/ServiceException.class {HTTP:110, TCP:109, IPv4:15} 

java.exe 172.22.1.98 SANKET-BA4C8C90  HTTP HTTP:Response, HTTP/1.1, Status: Not found, URL: /LEDLabServer/sampleBlinkProxy/javax/xml/rpc/ServiceException.class {HTTP:110, TCP:109, IPv4:15} 

java.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...., SrcPort=3899, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=3129701517, Ack=3474193866, Win=64243 (scale factor 0x0) = 64243 {TCP:109, IPv4:15} 
java.exe SANKET-BA4C8C90  172.22.1.98 HTTP HTTP:Request, GET /LEDLabServer/sampleBlinkProxy/javax/xml/rpc/ServiceException.class {HTTP:110, TCP:109, IPv4:15} 

java.exe 172.22.1.98 SANKET-BA4C8C90  HTTP HTTP:Response, HTTP/1.1, Status: Not found, URL: /LEDLabServer/sampleBlinkProxy/javax/xml/rpc/ServiceException.class {HTTP:110, TCP:109, IPv4:15} 

java.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...., SrcPort=3899, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=3129701767, Ack=3474195158, Win=65535 (scale factor 0x0) = 65535 {TCP:109, IPv4:15} 

java.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...F, SrcPort=3899, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=3129701767, Ack=3474195158, Win=65535 (scale factor 0x0) = 65535 {TCP:109, IPv4:15} 

java.exe 172.22.1.98 SANKET-BA4C8C90  TCP TCP:Flags=...A...., SrcPort=HTTP Alternate(8080), DstPort=3899, PayloadLen=0, Seq=3474195158, Ack=3129701768, Win=64535 (scale factor 0x0) = 64535 {TCP:109, IPv4:15} 

java.exe 172.22.1.98 SANKET-BA4C8C90  TCP TCP:Flags=...A...F, SrcPort=HTTP Alternate(8080), DstPort=3899, PayloadLen=0, Seq=3474195158, Ack=3129701768, Win=64535 (scale factor 0x0) = 64535 {TCP:109, IPv4:15} 

java.exe SANKET-BA4C8C90  172.22.1.98 TCP TCP:Flags=...A...., SrcPort=3899, DstPort=HTTP Alternate(8080), PayloadLen=0, Seq=3129701768, Ack=3474195159, Win=65535 (scale factor 0x0) = 65535 {TCP:109, IPv4:15} 

PS:我正在使用JAXRPC進行Web服務。

有人可以幫助我嗎?

+0

與JavaScript類似,還存在用於客戶端的Javaconsole。有沒有(有用的)消息? – reporter

回答

1

的問題是從你的日誌很明顯:

HTTP:響應,HTTP/1.1,狀態:未發現,網址:/LEDLabServer/sampleBlinkProxy/javax/xml/rpc/ServiceException.class

您沒有將類文件安裝在正確的位置,所以瀏覽器找不到它們。

+0

這個Applet的相同代碼在第一個日誌中表現得非常好。但是,當applet嵌入在html頁面中時,同一個applet會直接調用/LEDLabServer/sampleBlinkProxy/javax/xml/rpc/ServiceException.class與get請求(這應該是POST/LEDLabServer/services/Blink)。我使用JAX-RPC在Eclipse-JEE-Indigo中生成了Web服務代理。 – Sanket

+0

我們都是對的:當你使用'appletviewer'時,該工具確保可以加載類。當您通過網絡服務器運行它時,**您**必須確保瀏覽器插件可以下載這些類。錯誤消息說你將類複製到了錯誤的地方(或根本沒有複製它們)。 –

+0

是的,我刪除了ServiceException類的錯誤。現在,當我打開瀏覽器的Java控制檯時,出現以下錯誤。事件期間發生 異常分派: java.lang.ClassCircularityError:的javax/XML/RPC/ServiceException \t在ledApplet.LEDApplet.paint(LEDApplet.java:109) \t在sun.awt.RepaintArea.paintComponent(未知源在ledApplet.LEDApplet.paint(LEDApplet.java:109) \t的javax/XML/RPC/ServiceException \t在sun.awt.RepaintArea:)....事件分派期間發生 例外: java.lang.ClassCircularityError。 paintComponent(Unknown Source)... – Sanket