2011-11-21 66 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