Hi Nick:
DConnect2 is my (NetCDF-Java library) version of the OPenDAP Java client HTTP
handler, that uses http commons library, so we should work together to make
this work.
It sounds like we need to add proxy support by configuring the http commons
library. I havent used an http proxy before, so I will need your help. If you
have a clear idea of how to proceed, let me know.
John
Nick Bower wrote:
Bummer. Found the real exception and the source - DODS libraries are
using the commons http client, which requires explicit proxy setting at
an application level (ie proxies must be a supported feature of DAP).
But even when skirting DNS availability using hosts file, we go from this,
java.net.UnknownHostException: www.marine.csiro.au
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:239)
at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
at
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
at opendap.dap.DConnect2.openConnection(DConnect2.java:218)
to this,
C:\Program Files\IDV_2.2>jre\bin\java -Dhttp.proxyHost=proxyhost
-Dhttp.proxyPor
t=3128 -Xmx512m -jar idv.jar
25/05/2007 14:52:15 org.apache.commons.httpclient.HttpMethodDirector
executeWith
Retry
INFO: I/O exception (java.net.ConnectException) caught when processing
request:
Connection timed out: connect
25/05/2007 14:52:15 org.apache.commons.httpclient.HttpMethodDirector
executeWith
Retry
INFO: Retrying request
25/05/2007 14:53:00 org.apache.commons.httpclient.HttpMethodDirector
executeWith
Retry
INFO: I/O exception (java.net.ConnectException) caught when processing
request:
Connection timed out: connect
Looking at the source below, it would indeed seem DAP does not support
proxies. This is hard to believe - it's more effective than any EULA
for curtailing commercial use. I'll take my grumbles to the DAP group I
guess... :(
opendap.dap.DConnect2.java:
private void openConnection(String urlString, Command command) throws
IOException, DAP2Exception, ParseException {
initHttpClient();
GetMethod method = new GetMethod(urlString);
method.setFollowRedirects(true);
if (acceptCompress)
method.setRequestHeader(new Header("Accept-Encoding",
"deflate,gzip"));
// enable sessions
if (allowSessions)
method.setRequestHeader(new Header("X-Accept-Session", "true"));
InputStream is = null;
try {
// Execute the method.
int statusCode = _httpClient.executeMethod(method);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nick Bower wrote:
IDV seems to be having trouble with our http proxy (squid). I've set
the following global parameters in runIDV.bat in the usual way;
-Dhttp.proxyHost=proxyhost -Dhttp.proxyPort=3128
however IDV fails to retrieve any data in the Data Chooser. See
traceback below. Could it have something to do with IDV insisting
DODS URI's begin with dods:// perhaps? What is the recommended
solution for using a http proxy?
By the way, I can navigate the server in the "Display" / web browsing
tab. It's only the Data Chooser that fails.
Thanks, Nick
An error has occurred:
There was an error loading the data:
Error creating data source:dods.grid with:
http://www.marine.csiro.au/dods/nph-dods/dods-data/bl/SPINUP4/temp/
Grid data source failed making data set:
dods://www.marine.csiro.au/dods/nph-dods/dods-data/bl/SPINUP4/temp/
Cant open
dods://www.marine.csiro.au/dods/nph-dods/dods-data/bl/SPINUP4/temp/
or as DODS
dods://www.marine.csiro.au/dods/nph-dods/dods-data/bl/SPINUP4/temp/
www.marine.csiro.au
java.io.FileNotFoundException: Cant open
dods://www.marine.csiro.au/dods/nph-dods/dods-data/bl/SPINUP4/temp/ or
as DODS
dods://www.marine.csiro.au/dods/nph-dods/dods-data/bl/SPINUP4/temp/
www.marine.csiro.au
at ucar.nc2.dataset.NetcdfDataset.openDODS(NetcdfDataset.java:380)
at ucar.nc2.dataset.NetcdfDataset.openFile(NetcdfDataset.java:316)
at ucar.nc2.dataset.NetcdfDataset.openDataset(NetcdfDataset.java:175)
at
ucar.nc2.dataset.NetcdfDatasetCache.acquire(NetcdfDatasetCache.java:203)
at
ucar.nc2.dataset.NetcdfDatasetCache.acquire(NetcdfDatasetCache.java:183)
at
ucar.nc2.dataset.NetcdfDatasetCache.acquire(NetcdfDatasetCache.java:171)
at ucar.nc2.dt.grid.GridDataset.open(GridDataset.java:71)
at
ucar.unidata.data.grid.GeoGridDataSource.doMakeDataSet(GeoGridDataSource.java:726)
at
ucar.unidata.data.grid.GeoGridDataSource.getDataset(GeoGridDataSource.java:743)
at
ucar.unidata.data.grid.GeoGridDataSource.initAfterCreation(GeoGridDataSource.java:335)
at
ucar.unidata.data.DataManager.createDataSource(DataManager.java:1186)
at
ucar.unidata.idv.IntegratedDataViewer.createDataSource(IntegratedDataViewer.java:1698)
at
ucar.unidata.idv.IntegratedDataViewer.makeDataSource(IntegratedDataViewer.java:1617)
at
ucar.unidata.idv.IntegratedDataViewer.makeDataSource(IntegratedDataViewer.java:1595)
at
ucar.unidata.idv.IntegratedDataViewer.handleAction(IntegratedDataViewer.java:1446)
at ucar.unidata.idv.DefaultIdv.handleAction(DefaultIdv.java:112)
at
ucar.unidata.idv.IntegratedDataViewer.handleAction(IntegratedDataViewer.java:1378)
at
ucar.unidata.idv.chooser.UrlChooser.loadURLInner(UrlChooser.java:250)
at ucar.unidata.idv.chooser.UrlChooser.loadURL(UrlChooser.java:222)
at
ucar.unidata.idv.chooser.UrlChooser.doLoadInThread(UrlChooser.java:269)
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 ucar.unidata.util.Misc$2.run(Misc.java:919)
at ucar.unidata.util.Misc$3.run(Misc.java:947)
And another example from your own servers...
java.io.FileNotFoundException: Cant open
dods://motherlode.ucar.edu:8080/thredds/dodsC/modelsNc/NCEP/NAM/CONUS_80km/NAM_CONUS_80km_20070524_1200.nc
or as DODS
dods://motherlode.ucar.edu:8080/thredds/dodsC/modelsNc/NCEP/NAM/CONUS_80km/NAM_CONUS_80km_20070524_1200.nc
motherlode.ucar.edu
at ucar.nc2.dataset.NetcdfDataset.openDODS(NetcdfDataset.java:380)
at ucar.nc2.dataset.NetcdfDataset.openFile(NetcdfDataset.java:316)
at ucar.nc2.dataset.NetcdfDataset.openDataset(NetcdfDataset.java:175)
at
ucar.nc2.dataset.NetcdfDatasetCache.acquire(NetcdfDatasetCache.java:203)
at
ucar.nc2.dataset.NetcdfDatasetCache.acquire(NetcdfDatasetCache.java:183)
at
ucar.nc2.dataset.NetcdfDatasetCache.acquire(NetcdfDatasetCache.java:171)
at ucar.nc2.dt.grid.GridDataset.open(GridDataset.java:71)
at
ucar.unidata.data.grid.GeoGridDataSource.doMakeDataSet(GeoGridDataSource.java:726)
at
ucar.unidata.data.grid.GeoGridDataSource.getDataset(GeoGridDataSource.java:743)
at
ucar.unidata.data.grid.GeoGridDataSource.initAfterCreation(GeoGridDataSource.java:335)
at
ucar.unidata.data.DataManager.createDataSource(DataManager.java:1186)
at
ucar.unidata.idv.IntegratedDataViewer.createDataSource(IntegratedDataViewer.java:1698)
at
ucar.unidata.idv.IntegratedDataViewer.makeDataSource(IntegratedDataViewer.java:1617)
at
ucar.unidata.idv.IntegratedDataViewer.makeDataSource(IntegratedDataViewer.java:1595)
at
ucar.unidata.idv.IntegratedDataViewer.makeDataSource(IntegratedDataViewer.java:1576)
at
ucar.unidata.idv.chooser.IdvChooser.makeDataSource(IdvChooser.java:610)
at
ucar.unidata.idv.chooser.ThreddsHandler.processNodes(ThreddsHandler.java:842)
at
ucar.unidata.idv.chooser.ThreddsHandler.processNode(ThreddsHandler.java:782)
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 ucar.unidata.util.Misc$2.run(Misc.java:921)
at ucar.unidata.util.Misc$3.run(Misc.java:947)