Hello Felix.
Thanks for the reply.
I believe it is the latest, we checked it out last week, both the jackrabbit
trunk and contrib trunk.
The file is relatively small, less than 200K. I ran it through the debugger
on the JCR (Client) side. It seems to connect fine, and am able to "read"
from the repository, but when I set the File object to the Node Property, is
when the exception comes up.
On the server side, it is the standard JCR Servlet embedded within Tomcat,
which creates the RMI Registry.
Do I have to do any special configuration or workarounds to get it to work?
-Duke
Duke K. Fong
Integrated Data Corporation
[EMAIL PROTECTED]
310-367-8412
310-815-2800 ext. 215
http://www.idc-global.com
-----Original Message-----
From: Felix Meschberger [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 14, 2005 2:02 AM
To: [email protected]
Subject: Re: [jira] Erledigt: (JCR-291) jcr-server-webapp: RMI Registration
unstable
Hi Doug,
Thanks for the additional info.
Given the name of the file your are trying to upload - mp3/u2-jesus.nzb
- I assume you are trying to upload a big file, right ? Could this be the
result of an issue with outdated jcr-rmi stream transmission from client to
server ? Are you testing with the most recent checkout of the jcr-rmi
project on both (client and server) sides ?
FYI: The last change to transmission of binary streams from client to server
included reducing the memory footprint - formerly the whole stream was read
into memory and then send to the client, while now the stream is sent in
segments of at most 4K.
Regards
Felix
Duke Fong schrieb:
Felix.
Here is my configuration:
Server (embedded within Tomcat, via the JCR-RMI from the contrib).
I am attaching my sample client code and the exception.
-Duke
------
package com.idc;
import javax.jcr.*;
public class RepoClient {
private static org.apache.log4j.Logger logger =
org.apache.log4j.Logger.getLogger(RepoClient.class);
public static final String rmiURI =
"//IDC19:1099/jackrabbit.repository";
protected static javax.jcr.Repository r = null;
protected static Session s = null;
static{
try{
System.setProperty("java.rmi.server.useCodebaseOnly", "true");
} catch(Exception e){
e.printStackTrace();
logger.error(e);
}
}
/**
*
*/
private RepoClient(){}
/**
*
*/
public static void connectRMI() {
try {
r =
new
org.apache.jackrabbit.rmi.client.ClientRepositoryFactory().getRepository(
rmiURI);
if ( null!=r ){
s = r.login(new javax.jcr.SimpleCredentials(
"username", "password".toCharArray()));
logger.info("JCR SESSION BOUNDED: " +
s.getRootNode().toString());
//RepoTest.dump(s.getRootNode());
}
} catch (NoClassDefFoundError e) {
logger.error(e);
} catch (Exception e) {
logger.error(e);
}
}
/**
*
*/
public static final void shutdownTest(){
((org.apache.jackrabbit.core.RepositoryImpl)s.getRepository()).shutdow
n();
}
/**
*
*/
public static final void addBinaryTest(){
java.io.File f =
new java.io.File("C:/mp3/u2-jesus.nzb");
try {
com.idc.util.FSImport.importFile(s.getRootNode(), f);
s.save();
logger.debug("ADDED CONTENT.");
} catch (javax.jcr.RepositoryException e) {
e.printStackTrace();
logger.error(e);
} catch (java.io.IOException e) {
e.printStackTrace();
logger.error(e);
}
}
/**
*
* @param args
*/
public static final void main(String args[]){
RepoClient.connectRMI();
RepoClient.addNodeTest();
}
}
EXCEPTION:
---------------------------------------------------------------------
org.apache.jackrabbit.rmi.client.RemoteRepositoryException: error
marshalling arguments; nested exception is:
java.net.SocketException: Software caused connection abort: socket
write error: error marshalling arguments; nested exception is:
java.net.SocketException: Software caused connection abort: socket
write error
at
org.apache.jackrabbit.rmi.client.ClientNode.setProperty(ClientNode.java:127)
at
org.apache.jackrabbit.rmi.client.ClientNode.setProperty(ClientNode.java:162)
at com.idc.util.FSImport.importFile(FSImport.java:90)
at com.idc.RepoClient.addBinaryTest(RepoClient.java:152)
at com.idc.RepoClient.main(RepoClient.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39
)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:86)
Caused by: java.rmi.MarshalException: error marshalling arguments;
nested exception is:
java.net.SocketException: Software caused connection abort: socket
write error
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
at
org.apache.jackrabbit.rmi.server.ServerNode_Stub.setProperty(Unknown
Source)
at
org.apache.jackrabbit.rmi.client.ClientNode.setProperty(ClientNode.java:123)
... 9 more
Caused by: java.net.SocketException: Software caused connection abort:
socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
at
java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStr
eam.ja
va:1676)
at
java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Obje
ctOutp
utStream.java:1585)
at
java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1395)
at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:294)
at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:258)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:117)
... 11 more
java.rmi.MarshalException: error marshalling arguments; nested exception
is:
java.net.SocketException: Software caused connection abort: socket
write error
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
at
org.apache.jackrabbit.rmi.server.ServerNode_Stub.setProperty(Unknown
Source)
at
org.apache.jackrabbit.rmi.client.ClientNode.setProperty(ClientNode.java:123)
at
org.apache.jackrabbit.rmi.client.ClientNode.setProperty(ClientNode.java:162)
at com.idc.util.FSImport.importFile(FSImport.java:90)
at com.idc.RepoClient.addBinaryTest(RepoClient.java:152)
at com.idc.RepoClient.main(RepoClient.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39
)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:86)
Caused by: java.net.SocketException: Software caused connection abort:
socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
at
java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStr
eam.ja
va:1676)
at
java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Obje
ctOutp
utStream.java:1585)
at
java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1395)
at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:294)
at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:258)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:117)
... 11 more
2005-12-13 09:57:23,622 [ERROR] [main] (RepoClient.java:158)
org.apache.jackrabbit.rmi.client.RemoteRepositoryException: error
marshalling arguments; nested exception is:
java.net.SocketException: Software caused connection abort: socket
write error: error marshalling arguments; nested exception is:
java.net.SocketException: Software caused connection abort: socket
write error
Duke K. Fong
Integrated Data Corporation
[EMAIL PROTECTED]
310-367-8412
310-815-2800 ext. 215
http://www.idc-global.com
-----Original Message-----
From: Felix Meschberger [mailto:[EMAIL PROTECTED]
Sent: Tuesday, December 13, 2005 2:09 AM
To: [email protected]
Subject: Re: [jira] Erledigt: (JCR-291) jcr-server-webapp: RMI
Registration unstable
Hi Duke,
Duke Fong schrieb:
Hello all.
I've been trying to work with the Jackrabbit JCR in Server/RMI mode.
Read only and simple Value object insertions work fine.
However, when I attempt to insert a file object (InputStream) via a
JCR client to a JCR Server via RMI, I get a socket exception.
Do you have sample code to reproduce and a stack trace at hand, so
that we could find out, where the problem might be ?
Has anyone successfully performed this on the JCR Server? If so, I
would love to share the experiences and get any input on the concept.
I do not have any problems doing read and write from and to the server
over RMI.
Regards,
Felix