Download source behind firewall
Hi All, Can anyone let me know how do i download the source of geronimo. I tried using "svn checkout https://svn.apache.org/repos/asf/geronimo/trunk geronimo", but i am not able to do it. It gives the following error "svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/geronimo/trunk' ". This could be because i am behind firewall. Please let me know how do it checkout the geronimo source using svn. thanks, -Sundar.
Re: Download source behind firewall
Sundaranathan wrote: Can anyone let me know how do i download the source of geronimo. I tried using "svn checkout https://svn.apache.org/repos/asf/geronimo/trunk geronimo", but i am not able to do it. It gives the following error "svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/geronimo/trunk' ". This could be because i am behind firewall. Please let me know how do it checkout the geronimo source using svn. Sundar, The secure URL is for committers only. Try using the non-secure URL: http://svn.apache.org/repos/asf/geronimo/trunk The HTTP protocol can easily tunnel through a firewall as long as the firewall allows it. That's actually a big reason that Subversion uses URLs over the HTTP protocol. But if you must use a proxy from behind your firewall, the Subversion client needs to be configured for this. Please see the following section of the Subversion book that discusses configuration options for proxy servers: http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-7-sect-1 Bruce -- perl -e 'print unpack("u30","<0G)[EMAIL PROTECTED]&5R\"F9E The Castor Project http://www.castor.org/ Apache Geronimo http://geronimo.apache.org/
Re: Download source behind firewall
Hi Bruce, Thanks. I tried that, now i am getting the following error "svn: PROPFIND request failed on '/repos/asf/geronimo/trunk' svn: PROPFIND of '/repos/asf/geronimo/trunk': 500 Server Error (http://svn.apache.org)". Please let me know what could be the reason for this failure. thanks, -Sundar. Bruce Snyder wrote: Sundaranathan wrote: Can anyone let me know how do i download the source of geronimo. I tried using "svn checkout https://svn.apache.org/repos/asf/geronimo/trunk geronimo", but i am not able to do it. It gives the following error "svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/geronimo/trunk' ". This could be because i am behind firewall. Please let me know how do it checkout the geronimo source using svn. Sundar, The secure URL is for committers only. Try using the non-secure URL: http://svn.apache.org/repos/asf/geronimo/trunk The HTTP protocol can easily tunnel through a firewall as long as the firewall allows it. That's actually a big reason that Subversion uses URLs over the HTTP protocol. But if you must use a proxy from behind your firewall, the Subversion client needs to be configured for this. Please see the following section of the Subversion book that discusses configuration options for proxy servers: http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-7-sect-1 Bruce
Re: Download source behind firewall
I just double checked on a clean machine and https works without an Apache login. I believe the problem is you did not install svn+ssl. If you don't have permission to upgrade the svn client on your computer, you can try http://tmate.org/svn/ which is a pure java subversion client that supports http, https, svn and svn+ssh connection protocols. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26 On Nov 30, 2004, at 7:31 PM, Sundaranathan wrote: Hi Bruce, Thanks. I tried that, now i am getting the following error "svn: PROPFIND request failed on '/repos/asf/geronimo/trunk' svn: PROPFIND of '/repos/asf/geronimo/trunk': 500 Server Error (http://svn.apache.org)". Please let me know what could be the reason for this failure. thanks, -Sundar. Bruce Snyder wrote: Sundaranathan wrote: Can anyone let me know how do i download the source of geronimo. I tried using "svn checkout https://svn.apache.org/repos/asf/geronimo/trunk geronimo", but i am not able to do it. It gives the following error "svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/geronimo/trunk' ". This could be because i am behind firewall. Please let me know how do it checkout the geronimo source using svn. Sundar, The secure URL is for committers only. Try using the non-secure URL: http://svn.apache.org/repos/asf/geronimo/trunk The HTTP protocol can easily tunnel through a firewall as long as the firewall allows it. That's actually a big reason that Subversion uses URLs over the HTTP protocol. But if you must use a proxy from behind your firewall, the Subversion client needs to be configured for this. Please see the following section of the Subversion book that discusses configuration options for proxy servers: http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-7-sect-1 Bruce
Re: Download source behind firewall
On Nov 30, 2004, at 9:21 PM, Dain Sundstrom wrote: I just double checked on a clean machine and https works without an Apache login. I believe the problem is you did not install svn+ssl. If you don't have permission to upgrade the svn client on your computer, you can try http://tmate.org/svn/ which is a pure java subversion client that supports http, https, svn and svn+ssh connection protocols. Sorry... I just took a close look at the tmate client and it appears to be just a library and specifically not a cli tool. Guess you'll have to upgrade. -dain
Re: Download source behind firewall
Hi Dain, Thanks. But i download the latest subversion. Does that not contain the ssl. The version of the subversion that i installed is subversion-1.1.1. Should i configure something to get the ssl. Please let me know what is that i should do. I hope the subversion that i downloaded and installed was latest. thanks, -Sundar. Dain Sundstrom wrote: On Nov 30, 2004, at 9:21 PM, Dain Sundstrom wrote: I just double checked on a clean machine and https works without an Apache login. I believe the problem is you did not install svn+ssl. If you don't have permission to upgrade the svn client on your computer, you can try http://tmate.org/svn/ which is a pure java subversion client that supports http, https, svn and svn+ssh connection protocols. Sorry... I just took a close look at the tmate client and it appears to be just a library and specifically not a cli tool. Guess you'll have to upgrade. -dain
Re: Download source behind firewall
When I installed it on my mac, I had to grab the version that specifically included ssl. FWIU, subversion does *not* ship with ssl support by default. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26 On Nov 30, 2004, at 9:36 PM, Sundaranathan wrote: Hi Dain, Thanks. But i download the latest subversion. Does that not contain the ssl. The version of the subversion that i installed is subversion-1.1.1. Should i configure something to get the ssl. Please let me know what is that i should do. I hope the subversion that i downloaded and installed was latest. thanks, -Sundar. Dain Sundstrom wrote: On Nov 30, 2004, at 9:21 PM, Dain Sundstrom wrote: I just double checked on a clean machine and https works without an Apache login. I believe the problem is you did not install svn+ssl. If you don't have permission to upgrade the svn client on your computer, you can try http://tmate.org/svn/ which is a pure java subversion client that supports http, https, svn and svn+ssh connection protocols. Sorry... I just took a close look at the tmate client and it appears to be just a library and specifically not a cli tool. Guess you'll have to upgrade. -dain
Re: Download source behind firewall
Hi Dain, Thanks. I will try that. thanks, -Sundar. Dain Sundstrom wrote: When I installed it on my mac, I had to grab the version that specifically included ssl. FWIU, subversion does *not* ship with ssl support by default. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26 On Nov 30, 2004, at 9:36 PM, Sundaranathan wrote: Hi Dain, Thanks. But i download the latest subversion. Does that not contain the ssl. The version of the subversion that i installed is subversion-1.1.1. Should i configure something to get the ssl. Please let me know what is that i should do. I hope the subversion that i downloaded and installed was latest. thanks, -Sundar. Dain Sundstrom wrote: On Nov 30, 2004, at 9:21 PM, Dain Sundstrom wrote: I just double checked on a clean machine and https works without an Apache login. I believe the problem is you did not install svn+ssl. If you don't have permission to upgrade the svn client on your computer, you can try http://tmate.org/svn/ which is a pure java subversion client that supports http, https, svn and svn+ssh connection protocols. Sorry... I just took a close look at the tmate client and it appears to be just a library and specifically not a cli tool. Guess you'll have to upgrade. -dain
Re: Download source behind firewall
Thanks Dain, finally i am able to checkout. -Sundar. Sundaranathan wrote: Hi Dain, Thanks. I will try that. thanks, -Sundar. Dain Sundstrom wrote: When I installed it on my mac, I had to grab the version that specifically included ssl. FWIU, subversion does *not* ship with ssl support by default. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26 On Nov 30, 2004, at 9:36 PM, Sundaranathan wrote: Hi Dain, Thanks. But i download the latest subversion. Does that not contain the ssl. The version of the subversion that i installed is subversion-1.1.1. Should i configure something to get the ssl. Please let me know what is that i should do. I hope the subversion that i downloaded and installed was latest. thanks, -Sundar. Dain Sundstrom wrote: On Nov 30, 2004, at 9:21 PM, Dain Sundstrom wrote: I just double checked on a clean machine and https works without an Apache login. I believe the problem is you did not install svn+ssl. If you don't have permission to upgrade the svn client on your computer, you can try http://tmate.org/svn/ which is a pure java subversion client that supports http, https, svn and svn+ssh connection protocols. Sorry... I just took a close look at the tmate client and it appears to be just a library and specifically not a cli tool. Guess you'll have to upgrade. -dain
Re: BLOB manipulation - question
Dain, Jeremy, thanks for your replies. Here is a short description of what I have so far understood about LOB manipulations: setBinaryStream setBinaryStream does work with Derby, MySQL and Oracle (except where the content is bigger than 4k). The JDBC specifications 3.0 mandate that the method setBinaryStream may also be used to store BLOB. BLOB creation * in the case of Oracle, the empty_blob() method is indeed to be used to create an empty BLOB. I tried unsuccessfully other approaches (setNull(index, Types.BLOB), setBinaryStream(index, null, 0) and INSERT TABLE A (myBLOBColumn) VALUES ('')). * in the case of MySQL a simple INSERT TABLE A (myBLOBColumn) VALUES ('') works. BLOB update BLOB updates are done either directly to the LOB itself or to a copy. It is implementation dependent and the method DatabaseMetaData.locatorsUpdateCopy() indicates which of this implementation is supported by a driver. * Oracle works directly with the LOB. This means that to update a BLOB, one just needs to do that: statement.executeUpdate("CREATE TABLE A (a1 VARCHAR(10), a2 BLOB)"); // execute this query to create a BLOB. preparedStatement = connection.prepareStatement("INSERT INTO A (a1, a2) VALUES ('a1', EMPTY_BLOB())"); preparedStatement .execute(); // update it in place preparedStatement = connection.prepareStatement("SELECT a2 FROM A WHERE a1 = 'a1' FOR UPDATE"); resultSet = preparedStatement .executeQuery(); rs.next(); Blob blob = rs.getBlob(1); OutputStream out = blob.setBinaryStream(1); // update the Blob by writing new data via out.write() // truncate Blob if required via blob.truncate(long); connection.commit(); The above snippet works with Oracle10g JDBC driver and above. Prior to this version, Oracle specific classes need to be used. * MySQL works with a copy of the LOB. This means that to update a BLOB, one needs to update it via setBlob or updateBlob. The previous snippet becomes: // execute this query to create a BLOB. preparedStatement = connection.prepareStatement("INSERT INTO A (a1, a2) VALUES ('a1', '')"); preparedStatement .execute(); // update the BLOB copy preparedStatement = connection.prepareStatement("SELECT a2 FROM A WHERE a1 = 'a1' FOR UPDATE"); resultSet = preparedStatement .executeQuery(); rs.next(); Blob blob = rs.getBlob(1); OutputStream out = blob.setBinaryStream(1); // update the Blob by writing new data via out.write() // truncate Blob if required via blob.truncate(long); // update the BLOB itself preparedStatement = c.prepareStatement("UPDATE A SET a2 = ? WHERE a1 = 'a1'"); preparedStatement .setBlob(1, blob); preparedStatement .execute(); connection.commit(); Based on these findings, I have started to implement a solution which does this: * use setBinaryStream if specified; or * decompose INSERT and UPDATE statements into two or three statements depending on a locatorsUpdateCopy configuration. Thanks, Gianny
Re: BLOB manipulation - question
Looks like it it time to implement some dialect specific back ends for TranQL. The original plan was to have an oracle specific sql generator to get around problems like blob insertion, blob updating, and differences in temporal types. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26 On Dec 1, 2004, at 2:21 PM, Gianny Damour wrote: Dain, Jeremy, thanks for your replies. Here is a short description of what I have so far understood about LOB manipulations: setBinaryStream setBinaryStream does work with Derby, MySQL and Oracle (except where the content is bigger than 4k). The JDBC specifications 3.0 mandate that the method setBinaryStream may also be used to store BLOB. BLOB creation * in the case of Oracle, the empty_blob() method is indeed to be used to create an empty BLOB. I tried unsuccessfully other approaches (setNull(index, Types.BLOB), setBinaryStream(index, null, 0) and INSERT TABLE A (myBLOBColumn) VALUES ('')). * in the case of MySQL a simple INSERT TABLE A (myBLOBColumn) VALUES ('') works. BLOB update BLOB updates are done either directly to the LOB itself or to a copy. It is implementation dependent and the method DatabaseMetaData.locatorsUpdateCopy() indicates which of this implementation is supported by a driver. * Oracle works directly with the LOB. This means that to update a BLOB, one just needs to do that: statement.executeUpdate("CREATE TABLE A (a1 VARCHAR(10), a2 BLOB)"); // execute this query to create a BLOB. preparedStatement = connection.prepareStatement("INSERT INTO A (a1, a2) VALUES ('a1', EMPTY_BLOB())"); preparedStatement .execute(); // update it in place preparedStatement = connection.prepareStatement("SELECT a2 FROM A WHERE a1 = 'a1' FOR UPDATE"); resultSet = preparedStatement .executeQuery(); rs.next(); Blob blob = rs.getBlob(1); OutputStream out = blob.setBinaryStream(1); // update the Blob by writing new data via out.write() // truncate Blob if required via blob.truncate(long); connection.commit(); The above snippet works with Oracle10g JDBC driver and above. Prior to this version, Oracle specific classes need to be used. * MySQL works with a copy of the LOB. This means that to update a BLOB, one needs to update it via setBlob or updateBlob. The previous snippet becomes: // execute this query to create a BLOB. preparedStatement = connection.prepareStatement("INSERT INTO A (a1, a2) VALUES ('a1', '')"); preparedStatement .execute(); // update the BLOB copy preparedStatement = connection.prepareStatement("SELECT a2 FROM A WHERE a1 = 'a1' FOR UPDATE"); resultSet = preparedStatement .executeQuery(); rs.next(); Blob blob = rs.getBlob(1); OutputStream out = blob.setBinaryStream(1); // update the Blob by writing new data via out.write() // truncate Blob if required via blob.truncate(long); // update the BLOB itself preparedStatement = c.prepareStatement("UPDATE A SET a2 = ? WHERE a1 = 'a1'"); preparedStatement .setBlob(1, blob); preparedStatement .execute(); connection.commit(); Based on these findings, I have started to implement a solution which does this: * use setBinaryStream if specified; or * decompose INSERT and UPDATE statements into two or three statements depending on a locatorsUpdateCopy configuration. Thanks, Gianny
Re: BLOB manipulation - question
Guys, Just an FYI...If you try the new Oracle driver from the 10g series (the drivers are backward compatible), the BLOB problem appears to have been fixed (finally). Jeff Dain Sundstrom wrote: Looks like it it time to implement some dialect specific back ends for TranQL. The original plan was to have an oracle specific sql generator to get around problems like blob insertion, blob updating, and differences in temporal types. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26 On Dec 1, 2004, at 2:21 PM, Gianny Damour wrote: Dain, Jeremy, thanks for your replies. Here is a short description of what I have so far understood about LOB manipulations: setBinaryStream setBinaryStream does work with Derby, MySQL and Oracle (except where the content is bigger than 4k). The JDBC specifications 3.0 mandate that the method setBinaryStream may also be used to store BLOB. BLOB creation * in the case of Oracle, the empty_blob() method is indeed to be used to create an empty BLOB. I tried unsuccessfully other approaches (setNull(index, Types.BLOB), setBinaryStream(index, null, 0) and INSERT TABLE A (myBLOBColumn) VALUES ('')). * in the case of MySQL a simple INSERT TABLE A (myBLOBColumn) VALUES ('') works. BLOB update BLOB updates are done either directly to the LOB itself or to a copy. It is implementation dependent and the method DatabaseMetaData.locatorsUpdateCopy() indicates which of this implementation is supported by a driver. * Oracle works directly with the LOB. This means that to update a BLOB, one just needs to do that: statement.executeUpdate("CREATE TABLE A (a1 VARCHAR(10), a2 BLOB)"); // execute this query to create a BLOB. preparedStatement = connection.prepareStatement("INSERT INTO A (a1, a2) VALUES ('a1', EMPTY_BLOB())"); preparedStatement .execute(); // update it in place preparedStatement = connection.prepareStatement("SELECT a2 FROM A WHERE a1 = 'a1' FOR UPDATE"); resultSet = preparedStatement .executeQuery(); rs.next(); Blob blob = rs.getBlob(1); OutputStream out = blob.setBinaryStream(1); // update the Blob by writing new data via out.write() // truncate Blob if required via blob.truncate(long); connection.commit(); The above snippet works with Oracle10g JDBC driver and above. Prior to this version, Oracle specific classes need to be used. * MySQL works with a copy of the LOB. This means that to update a BLOB, one needs to update it via setBlob or updateBlob. The previous snippet becomes: // execute this query to create a BLOB. preparedStatement = connection.prepareStatement("INSERT INTO A (a1, a2) VALUES ('a1', '')"); preparedStatement .execute(); // update the BLOB copy preparedStatement = connection.prepareStatement("SELECT a2 FROM A WHERE a1 = 'a1' FOR UPDATE"); resultSet = preparedStatement .executeQuery(); rs.next(); Blob blob = rs.getBlob(1); OutputStream out = blob.setBinaryStream(1); // update the Blob by writing new data via out.write() // truncate Blob if required via blob.truncate(long); // update the BLOB itself preparedStatement = c.prepareStatement("UPDATE A SET a2 = ? WHERE a1 = 'a1'"); preparedStatement .setBlob(1, blob); preparedStatement .execute(); connection.commit(); Based on these findings, I have started to implement a solution which does this: * use setBinaryStream if specified; or * decompose INSERT and UPDATE statements into two or three statements depending on a locatorsUpdateCopy configuration. Thanks, Gianny
Re: BLOB manipulation - question
On 2/12/2004 9:50 AM, Jeff Genender wrote: Guys, Just an FYI...If you try the new Oracle driver from the 10g series (the drivers are backward compatible), the BLOB problem appears to have been fixed (finally). Jeff Jeff, you are right! It seems that I did mess around with the Oracle driver versions :-(. I have tested one more time the insertion of a 5MB file followed by an update with a 1MB file with Oracle10g JDBC driver against an Oracle9i DB and it was successful. So, I assume that one does not need to decompose anymore. Thanks, Gianny
Re: Changes to GBeanInfo classes
Done -dain On Nov 29, 2004, at 5:43 PM, Dain Sundstrom wrote: Summary: I think we need to change the GBeanInfo classes so the constructors require all data be specified. This means that the GBeanInstance (the implementation class) will not try to "figure things out" such as accessor names. This change will not break Geronimo, OpenEJB or ActiveMQ, since all of these projects never work directly with the GBeanInfo classes directly. Instead they always work through the GBeanInfoBuilder class. This will break code that is building GBeanInfo objects directly (I don't know of any but there could be some out there). Problems: The lack of information in the GBeanInfo classes is leading to overly complex code. The GBeanInfo classes were originally designed to make it easy for programers to create the info objects by hand (in static code blocks). The classes were designed to take the minimum amount of information necessary to create a GBeanMBean. Information such as an accessor name could be left unspecified, and the GBeanMBean would guess the accessor name based on JavaBean naming conventions. This guessing is itself complex, and does not allow for user supplied algorithms for matching. This lack of information is also carried through the rest of the system. For example, the kernel has a getGBeanInfo method to retrieve the GBean info for any registered GBean. The problem is the GBeanInfo is not fully specified, which make it difficult to write things like a kernel based console and the MEJB (We currently have a pretty ugly hack that makes some of this possible). Solution: Change the GBeanInfo classes to require full specification and move the "figure things out" code from the GBeanInstance to the GBeanInfoBuilder. Impact: This direct creation of GBeanInfo objects has been discarded over time and has been replaced with the GBeanInfoBuilder class. There are very few classes that construct a GBeanInfo or deal with one directly, and most of those are internal to the Kernel. After checking, Geronimo, ActiveMQ, and OpenEJB, I only found one use of a GAttributeInfo constructor in ActiveMQ, which can trivially be converted to the equivalent GBeanInfoBuilder method. Quoting from above, "this change will not break Geronimo, OpenEJB or ActiveMQ... This will break code that is building GBeanInfo objects directly (I don't know of any but there could be some out there)." Benefits: GBean implementation becomes a lot less complex. Enables the ability to write more complex GBeanInfoBuilders. Validation of GBeanInfo is much easier, and happens at GBeanInfo creation time instead of when we attempt to instantiate a GBeanInstance. GBean browsers such as MEJB and consoles are much easier to write. -dain -- Dain Sundstrom Chief Architect Gluecode Software 310.536.8355, ext. 26