Hi
We have an application hosted as applets on our web-site, but offer the
same application to customers as a "standalone" off-line version. This
off-line version is the same code-base, deploy and HTML but run from the
local file system (in the absence of a web-server).
I have a J2EE Jasper Reporting framework running in JBoss. On the off-line
product JBoss runs on the same machine.
The on-line version works perfectly in both IE and FireFox.
The off-line version works perfectly in FireFox, but alas,
NOT in IE!
First, here's some code:
private JasperPrint generateReport() {
Hashtable enva = new Hashtable();
System.out.println("enva.put(\"java.naming.factory.initial\", \"org.jnp.interfaces.NamingContextFactory\");");
enva.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
System.out.println("enva.put(\"java.naming.factory.url.pkgs\", \"org.jboss.naming:org.jnp.interfaces\");");
enva.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
int port = 1099;
String host = "127.0.0.1";
System.out.println("enva.put(\"java.naming.provider.url\", \"jnp:// " + host + ":" + port);
enva.put("java.naming.provider.url", "jnp:// " + host + ":" + port);
try {
System.out.println("Context ictx = new InitialContext(enva);");
Context ictx = new InitialContext(enva);
System.out.println("Object o = ictx.lookup(\"java:/SessionReport\");");
Object o = ictx.lookup("java:/SessionReport");
System.out.println("SessionReportControllerHome home = (SessionReportControllerHome) PortableRemoteObject.narrow(o, SessionReportControllerHome.class);");
SessionReportControllerHome home = (SessionReportControllerHome) PortableRemoteObject.narrow(o, SessionReportControllerHome.class);
System.out.println("SessionReportController remote = home.create();");
SessionReportController remote = home.create();
PSIberRDSParameterSEIFSAPensionProvidendFund rVO = new PSIberRDSParameterSEIFSAPensionProvidendFund();
//call the function on remote
try {
JasperPrint jasperPrint = new JasperPrint();
JasperVO jasperVO = remote.generateMyJasperReport(rVO);
jasperPrint = jasperVO.getJasperPrint();
return jasperPrint;
} catch (Exception re) {
System.err.println("remote exception is " + re.getMessage());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
This function returns a net.sf.jasperreports.engine.JasperPrint object wich I
feed to the JasperViewer.
Here's the output in my Java console:
enva.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
enva.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
enva.put("java.naming.provider.url", "jnp:// 127.0.0.1:1099
Context ictx = new InitialContext(enva);
Object o = ictx.lookup("java:/SessionReport");
javax.naming.CommunicationException [Root exception is java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.net.SocketException: Software caused connection abort: recv failed]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:707)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
at javax.naming.InitialContext.lookup(Unknown Source)
at psiber.v2.pp.psiberworks.server.MessageRouter_PAY.callSEIFSAPensionProvidentFundReport(MessageRouter_PAY.java:15159)
at psiber.v2.pp.psiberworks.server.MessageRouter_PAY.getPayAppletDataImpl(MessageRouter_PAY.java:14895)
at psiber.v2.pp.psiberworks.server.MessageRouter_PAY.getAppletDataImpl(MessageRouter_PAY.java:14228)
at psiber.v2.pp.psiberworks.server.MessageRouter.getAppletData(MessageRouter.java:135)
at psiber.v2.pp.psiberworks.server.RemoteSessionImpl.getAppletDataImpl(RemoteSessionImpl.java:734)
at psiber.v2.pp.psiberworks.server.RemoteSessionImpl.access$0(RemoteSessionImpl.java:710)
at psiber.v2.pp.psiberworks.server.RemoteSessionImpl$1.exec(RemoteSessionImpl.java:668)
at psiber.v2.pp.psiberworks.server.SynchronizedAccessController.doExecuteQuery(SynchronizedAccessController.java:61)
at psiber.v2.pp.psiberworks.server.SynchronizedAccessController.executeQuery(SynchronizedAccessController.java:137)
at psiber.v2.pp.psiberworks.server.RemoteSessionImpl.getAppletData(RemoteSessionImpl.java:690)
at psiber.v2.pp.psiberworks.client.RemoteSessionProxy.getAppletData(RemoteSessionProxy.java:109)
at psiber.v2.pp.psiberworks.client.hr.psiberpay.PsiberPayReportWizardApplet.getAppletData(PsiberPayReportWizardApplet.java:7094)
at psiber.v2.pp.psiberworks.client.hr.psiberpay.PsiberPayReportWizardApplet.callSEIFSAPensionProvidentFundReport(PsiberPayReportWizardApplet.java:14492)
at psiber.v2.pp.psiberworks.client.hr.psiberpay.PsiberPayReportWizardApplet.processSelectedReport(PsiberPayReportWizardApplet.java:14091)
at psiber.v2.pp.psiberworks.client.hr.psiberpay.PsiberPayReportWizardApplet.onNextButtonPressed(PsiberPayReportWizardApplet.java:13229)
at psiber.v2.pp.psiberworks.client.hr.psiberpay.PsiberPayReportWizardApplet.actionPerformed(PsiberPayReportWizardApplet.java:361)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.net.SocketException: Software caused connection abort: recv failed
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610)
... 28 more
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at java.io.DataInputStream.readByte(Unknown Source)
... 32 more
remote exception is null
You'll see just as the InitialContext.lookup is executed a
javax.naming.CommunicationException is thrown.
I have re-tried changing hostnames, ip addresses etc.
Port 1099 is allowed on Personal Firewall and I even diabled it to be sure.
Like I said, it works fine in FireFox.
I'm running Windows XP Version 5.1 (Build 2600.xpsp_sp2_gdr.050501-1519 : Service Pack 2)
and IE Version 6.0.2900.2180.xpsp_sp2_gdr.050501-1519
and SUN JAVA Version 1.4.2_06 (build 1.4.2_06-b03)
I have tested this on 1.5.0 (build 15.0_02-b09) with the same result.
Please help! F1! F1! F1!
Thanks in advance :D