提交 5ef99d18 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 18df157d
......@@ -426,7 +426,7 @@ For more information, see:
<h3>ODBC Installation</h3>
<p>
First, the ODBC driver must be installed.
Any recent PostgreSQL ODBC driver should work, however version 8.2.4 or newer is recommended.
Any recent PostgreSQL ODBC driver should work, however version 8.2 (psqlodbc-08_02*) or newer is recommended.
The Windows version of the PostgreSQL ODBC driver is available at
<a href="http://www.postgresql.org/ftp/odbc/versions/msi">http://www.postgresql.org/ftp/odbc/versions/msi</a>.
</p>
......
......@@ -16,7 +16,10 @@ Change Log
<h1>Change Log</h1>
<h2>Next Version (unreleased)</h2>
<ul><li>Java methods with variable number of parameters can now be used (for Java 1.5 or newer).
<ul><li>When using DB_CLOSE_DELAY, sometimes a NullPointerException is thrown when
the database is opened almost at the same time as it is closed automatically.
Thanks a lot to Dmitry Pekar for finding this!
</li><li>Java methods with variable number of parameters can now be used (for Java 1.5 or newer).
</li><li>The Japanese translation has been improved by Masahiro Ikemoto. Thanks a lot!
</li><li>The H2 Console replaced an empty user name with a single space.
</li><li>The build target 'build jarSmall' now includes the embedded database.
......
......@@ -47,10 +47,10 @@ Here is the list of known and confirmed issues:
<ul>
<li>Some problems have been found with right outer join. Internally, it is converted to left outer join, which
does not always produce the same results as other databases when used in combination with other joins.
</li><li>It has been reported that when using Install4j on some Linux systems and enabling the 'pack200' option,
</li><li>When using Install4j before 4.1.4 on Linux and enabling 'pack200',
the h2.jar becomes corrupted by the install process, causing application failure.
A workaround is to add an empty file h2.jar.nopack next to the h2.jar file.
The reason for this problem is not known.
This problem is solved in Install4j 4.1.4.
</li></ul>
<br /><a name="open_source"></a>
......
......@@ -19,7 +19,7 @@ JaQu
<p>
JaQu stands for Java Query and allows to access databases using pure Java.
JaQu provides a fluent interface (or internal DSL) for building SQL statements.
JaQu replaces SQL, JDBC, and O/R frameworks such as Hibernate.
JaQu replaces SQL, JDBC, and object/relation frameworks such as Hibernate.
JaQu is something like LINQ for Java (LINQ stands for "language integrated query" and is a
Microsoft .NET technology). The following JaQu code:
</p>
......@@ -43,7 +43,7 @@ Javadoc and auto-complete are supported. Type checking is performed by the compi
JaQu fully protects against SQL injection.
</p>
<p>
JaQu is much smaller than object-relation mapping tools such as Hibernate.
JaQu is much smaller than object/relation mapping tools such as Hibernate.
Unlike iBatis and Hibernate, no XML or annotation based configuration is required;
instead the configuration (if required at all) is done in pure Java, in the application itself.
</p>
......@@ -261,7 +261,8 @@ is integrated in the class itself.
This project has just been started, and nothing is fixed yet.
Some ideas for what to implement include:
</p>
<ul><li>Provide API level compatibility with JPA (so that JaQu can be used as an extension of JPA).
<ul><li>Support queries on collections (instead of using a database).
</li><li>Provide API level compatibility with JPA (so that JaQu can be used as an extension of JPA).
</li><li>Internally use a JPA implementation (for example Hibernate) instead of SQL directly.
</li><li>Use PreparedStatements and cache them.
</li></ul>
......
......@@ -200,6 +200,11 @@ JavaPlayer</a><br />
Pure Java MP3 player.
</p>
<p><a href="http://code.google.com/p/javasimon">
Java Simon</a><br />
Simple Monitoring API.
</p>
<p><a href="http://jgeocoder.sourceforge.net">
JGeocoder</a><br />
Free Java geocoder. Geocoding is the process of estimating a latitude and longitude for a given location.
......@@ -335,6 +340,11 @@ Railo is an alternative engine for the Cold Fusion Markup Language, that compile
programmed in CFML into Java bytecode and executes it on a servlet engine.
</p>
<p><a href="http://www.razuna.com">
Razuna</a><br />
Open source Digital Asset Management System with integrated Web Content Management.
</p>
<p><a href="http://patir.rubyforge.org/rutema/index.html">
Rutema</a><br />
Rutema is a test execution and management tool for heterogeneous development environments written in Ruby.
......
......@@ -380,6 +380,8 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Support JMX: Create an MBean for each database and server (support JConsole).
</li><li>H2 Console: autocomplete: keep the previous setting
</li><li>executeBatch: option to stop at the first failed statement.
</li><li>Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5
</li><li>Support Oracle ROWID (unique identifier for each row).
</li></ul>
<h2>Not Planned</h2>
......
......@@ -392,7 +392,7 @@ add the following snippet to your web.xml file (after context-param and before f
For details on how to access the database, see the code DbStarter.java
</p>
<p>
By default the DbStarter listener opens a connection using the database URL jdbc:h2:~/test
By default the DbStarter listener opens an embedded connection using the database URL jdbc:h2:~/test
and user name and password 'sa'. It can also start the TCP server, however this is disabled by default.
To enable it, use the db.tcpServer parameter in web.xml. Here is the complete list of options.
These options are set just after the display-name and description tag, but before any listener and filter tags:
......@@ -415,6 +415,11 @@ These options are set just after the display-name and description tag, but befor
&lt;param-value>-tcpAllowOthers&lt;/param-value>
&lt;/context-param>
</pre>
<p>
When the web application is stopped, the database connection will be closed automatically.
If the server is started within the DbStarter, it will also be stopped automatically when the
web application is stopped.
</p>
<br /><a name="csv"></a>
<h2>CSV (Comma Separated Values) Support</h2>
......
......@@ -216,7 +216,12 @@ class WebThread extends Thread implements DatabaseEventListener {
String head = readHeaderLine();
if (head.startsWith("GET ") || head.startsWith("POST ")) {
int begin = head.indexOf('/'), end = head.lastIndexOf(' ');
String file = head.substring(begin + 1, end).trim();
String file;
if (begin < 0 || end < begin) {
file = "";
} else {
file = head.substring(begin + 1, end).trim();
}
trace(head + ": " + file);
file = getAllowedFile(file);
attributes = new Properties();
......
......@@ -24,23 +24,30 @@ public class TestOpenClose extends TestBase implements DatabaseEventListener {
int nextId = 10;
/**
* This method is called when executing this application from the command
* line.
*
* @param args the command line parameters
*/
public static void main(String[] args) throws Exception {
new TestOpenClose().test();
}
public void test() throws Exception {
testCloseDelay();
testBackup(false);
testBackup(true);
testCase();
testReconnectFast();
}
private void testCloseDelay() throws Exception {
String url = getURL("openClose;DB_CLOSE_DELAY=1", true);
String user = getUser(), password = getPassword();
Connection conn = DriverManager.getConnection(url, user, password);
conn.close();
Thread.sleep(950);
long time = System.currentTimeMillis();
for (int i = 0; System.currentTimeMillis() - time < 100; i++) {
conn = DriverManager.getConnection(url, user, password);
conn.close();
}
conn = DriverManager.getConnection(url, user, password);
conn.createStatement().execute("SHUTDOWN");
conn.close();
}
private void testBackup(boolean encrypt) throws Exception {
deleteDb(baseDir, "openClose");
String url;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论