I am trying to run RFT with PostgreSQL DB and following
http://www.globus.org/toolkit/docs/4.2/4.2.1/data/rft/admin/#rft-postgresql:
7. Open $GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml.
8. Find the dbConfiguration section under the
ReliableFileTransferService <service> section.
9. Change the connectionString to point to the machine on which you
installed PostgreSQL and to the name of the database you used in step 2.
If you installed PostgreSQL on the same machine as your Globus install,
the default should work fine for you.
Does "the default should work fine for you" mean that even if I use
PostgreSQL as DB backend for RFT there is no need to change driverName
to org.postgresql.Driver (i.e. one can leave it as
org.apache.derby.jdbc.EmbeddedDriver) and connectionString to
jdbc:postgresql://<postgresql host IP>/rftDatabase (i.e. the
default value jdbc:derby:GLOBUS_LOCATION/var/rftDatabase can be used) in
$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml file?
I have the following settings:
[rft server]$ grep tcpip /var/lib/pgsql/data/postgresql.conf
tcpip_socket = true
[rft server]$ grep ^host /var/lib/pgsql/data/pg_hba.conf
host rftDatabase "globus" "<postgresql host IP>"
255.255.255.255 md5
$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml:
<resource name="dbConfiguration"
[...snip...]
<parameter>
<name>
driverName
</name>
<value>
org.postgresql.Driver
</value>
</parameter>
<parameter>
<name>
connectionString
</name>
<value>
jdbc:postgresql://<postgresql host IP>/rftDatabase
[...snip...]
[glo...@rft server]$ /etc/init.d/globus-ws-java-container restart
Stopping Globus container. PID: 23701
Container stopped
Starting Globus container. PID: 23871
[u...@user inteface]$ cat transfer.xfr
true
16000
16000
false
1
true
1
null
null
false
10
gsiftp://<hostname of gridftp server A>:2811/etc/group
gsiftp://<hostname of gridftp server B>:2811/tmp/rftTest_Done.tmp
[u...@user inteface]$ rft -h <rft service hostname> -f transfer.xfr
Status: Pending
Exception in thread "main" Error during startup processing. Caused by
AxisFault
faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.rmi.RemoteException: Error in start; nested exception
is:
java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.rmi.RemoteException: Error
in start; nested exception is:
java.lang.NullPointerException
at
org.globus.transfer.reliable.service.ReliableFileTransferImpl.start(ReliableFileTransferImpl.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:410)
at
org.globus.axis.providers.RPCProvider.invokeMethodSub(RPCProvider.java:112)
at
org.globus.axis.providers.PrivilegedInvokeMethodAction.run(PrivilegedInvokeMethodAction.java:47)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at
org.globus.gsi.jaas.GlobusSubject.runAs(GlobusSubject.java:60)
at org.globus.gsi.jaas.JaasSubject.doAs(JaasSubject.java:100)
at
org.globus.axis.providers.RPCProvider.invokeMethod(RPCProvider.java:102)
at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:332)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
at
org.apache.axis.server.AxisServer.invokeService(AxisServer.java:234)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:375)
at
org.globus.wsrf.container.ServiceThread.doPost(ServiceThread.java:949)
at
org.globus.wsrf.container.ServiceThread.process(ServiceThread.java:684)
at
org.globus.wsrf.container.GSIServiceThread.process(GSIServiceThread.java:182)
at
org.globus.wsrf.container.ServiceThread.run(ServiceThread.java:471)
Caused by: java.lang.NullPointerException
at
org.globus.transfer.reliable.service.ReliableFileTransferImpl.start(ReliableFileTransferImpl.java:129)
... 24 more
java.rmi.RemoteException: Error in start; nested exception is:
java.lang.NullPointerException
at
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:223)
at
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:130)
at
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at
org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
Source)
at
org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:695)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at
org.globus.axis.message.addressing.handler.AddressingHandler.processClientResponse(AddressingHandler.java:367)
at
org.globus.wsrf.handlers.AddressingHandler.processClientResponse(AddressingHandler.java:92)
at
org.globus.axis.message.addressing.handler.AddressingHandler.invoke(AddressingHandler.java:132)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at
org.apache.axis.client.AxisClient.invokeInbound(AxisClient.java:207)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:298)
at org.apache.axis.client.Call.invokeEngine(Call.java:2838)
at org.apache.axis.client.Call.invoke(Call.java:2824)
at org.apache.axis.client.Call.invoke(Call.java:2501)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:1835)
at
org.globus.rft.generated.bindings.ReliableFileTransferPortTypeSOAPBindingStub.start(ReliableFileTransferPortTypeSOAPBindingStub.java:1672)
at
org.globus.transfer.reliable.client.ReliableFileTransferJob.start(ReliableFileTransferJob.java:474)
at
org.globus.transfer.reliable.client.ReliableFileTransferClient.parseArgs(ReliableFileTransferClient.java:150)
at
org.globus.transfer.reliable.client.ReliableFileTransferClient.main(ReliableFileTransferClient.java:262)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.globus.bootstrap.BootstrapBase.launch(BootstrapBase.java:114)
at org.globus.bootstrap.Bootstrap.main(Bootstrap.java:41)
But as soon as I change driverName to
org.apache.derby.jdbc.EmbeddedDriver and connectionString to
jdbc:derby:GLOBUS_LOCATION/var/rftDatabase in
$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml file the user's
test mentioned above passed successfully.
Could you, please, help me with understanding what is wrong in my RFT
configuration with PostgreSQL DB?
My environment on RFT/PostgreSQL machine:
OS is Scientific Linux 4.8,
gt4.2.1-x86_rhas_4-installer.tar.gz,
jdk-1.5.0_17-fcs,
apache-ant-1.7.1.
postgresql-libs-7.4.26-1.el4_8.1
postgresql-jdbc-7.4.26-1.el4_8.1
postgresql-7.4.26-1.el4_8.1
postgresql-server-7.4.26-1.el4_8.1
I aslo wonder if I understand things right.
1. There are three possible RFT backend: derby, PostgreSQL and MySQL. Is
that correct?
2. With driverName=org.apache.derby.jdbc.EmbeddedDriver and
connectionString=jdbc:derby:GLOBUS_LOCATION/var/rftDatabase in
$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml there is no need in
neither PostgreSQL nor MySQL?
Thanks in advance,
Nikolay