Fala galera, sou novato por aqui.
Tenho elaborado um sistema por Java Web Start com webservices Axis2 no Tomcat, tenho um serviço que recebe um objeto serializado e devolve o mesmo serializado, no lado do cliente faço a deserialização para trabalhar com ele normalmente, isso funciona na perfeição quando se trata de uma aplicação normal java executada a partir do main() mas quando executo a partir do jnlp ele arrebenta com este erro:
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3019)
at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2820)
at java.io.ObjectInputStream.readString(ObjectInputStream.java:1599)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1320)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at com.jrdevel.core.client.JRServerCommunication.desSerializer(JRServerCommunication.java:77)
at com.jrdevel.core.client.JRServerCommunication.refresh(JRServerCommunication.java:45)
at com.jrdevel.core.template.client.JRClientTable.execute(JRClientTable.java:27)
at com.jrdevel.core.gui.swing.JRSwingManager.createTable(JRSwingManager.java:343)
at com.jrdevel.core.gui.swing.JRSwingManager.createComponents(JRSwingManager.java:209)
at com.jrdevel.core.gui.swing.JRSwingManager.run(JRSwingManager.java:138)
at com.jrdevel.core.template.base.JRWindow.execute(JRWindow.java:51)
at com.jrdevel.core.template.base.JRCommon.run(JRCommon.java:31)
at com.jrdevel.pvn.main.Application.returnKey(Application.java:46)
at com.jrdevel.core.gui.swing.JRSwingEventsManager.actionPerformed(JRSwingEventsManager.java:44)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at org.jdesktop.swingx.JXHyperlink.fireActionPerformed(JXHyperlink.java:266)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Só acontecendo também quando o objeto é grande, ou seja utilizo estas chamadas em várias partes da aplicação, só quando tento deserealizar um objecto que é muito grande que acontece isso.
Tentei aumentar a memória da máquina virtual que executa o jnpl com a propriedade:
<j2se version="1.6+" initial-heap-size="1024m"/>
O código que utilizo para deserealizar os objectos é:
private JRExchange desSerializer(DataHandler exchange){
try {
ByteArrayOutputStream buffOS= new ByteArrayOutputStream();
exchange.writeTo(buffOS);
byte[] buff = buffOS.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(buff,0,buff.length);
ObjectInputStream ois = new ObjectInputStream(bais);
JRExchange exch = (JRExchange)ois.readObject();
bais.close();
ois.close();
return exch;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
Bom é isso, precisava colocar em produção isso amanhã, se alguém ja apanhou este erro, já tentei procurar em tudo e nada de resolução.
Obrigado desde já