mirror of
https://github.com/yasuhirokimura/db18
synced 2026-06-08 18:29:23 +00:00
207 lines
8.7 KiB
HTML
207 lines
8.7 KiB
HTML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Java FAQ</title>
|
||
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
|
||
<link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
|
||
<link rel="up" href="java.html" title="Chapter 5. Java API" />
|
||
<link rel="prev" href="java_program.html" title="Java programming notes" />
|
||
<link rel="next" href="bdb_server.html" title="Chapter 6. Berkeley DB Server" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 18.1.25</p>
|
||
</div>
|
||
<table width="100%" summary="Navigation header">
|
||
<tr>
|
||
<th colspan="3" align="center">Java FAQ</th>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%" align="left"><a accesskey="p" href="java_program.html">Prev</a> </td>
|
||
<th width="60%" align="center">Chapter 5. Java API </th>
|
||
<td width="20%" align="right"> <a accesskey="n" href="bdb_server.html">Next</a></td>
|
||
</tr>
|
||
</table>
|
||
<hr />
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title" style="clear: both"><a id="java_faq"></a>Java FAQ</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="orderedlist">
|
||
<ol type="1">
|
||
<li>
|
||
<span class="bold">
|
||
<strong>On what platforms is the Berkeley DB
|
||
Java API supported?</strong>
|
||
</span>
|
||
<p>All platforms supported by Berkeley DB that have a
|
||
JVM compatible with J2SE 1.4 or above.</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>How does the Berkeley DB Java API
|
||
relate to the J2EE standard?</strong>
|
||
</span>
|
||
<p>
|
||
The Berkeley DB Java API does not currently
|
||
implement any part of the J2EE standard. That said, it
|
||
does implement the implicit standard for Java <a class="ulink" href="http://download.oracle.com/javase/1.5.0/docs/guide/collections/" target="_top">
|
||
Java Collections</a>. The concept of a
|
||
transaction exists in several Java packages (J2EE, XA,
|
||
JINI to name a few). Support for these APIs will be
|
||
added based on demand in future versions of Berkeley
|
||
DB.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>How should I incorporate db.jar and
|
||
the db native library into a Tomcat or other J2EE
|
||
application servers?</strong>
|
||
</span>
|
||
<p>
|
||
Tomcat and other J2EE application servers have the
|
||
ability to rebuild and reload code automatically. When
|
||
using Tomcat this is the case when "reloadable" is set
|
||
to "true". If your WAR file includes the db.jar it too
|
||
will be reloaded each time your code is reloaded. This
|
||
causes exceptions as the native library can't be
|
||
loaded more than once and there is no way to unload
|
||
native code. The solution is to place the db.jar in
|
||
$TOMCAT_HOME/common/lib and let Tomcat load that
|
||
library once at start time rather than putting it into
|
||
the WAR that gets reloaded over and over.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>Can I use the Berkeley DB Java API
|
||
from within a EJB, a Servlet or a JSP page?</strong>
|
||
</span>
|
||
<p>
|
||
Yes. The Berkeley DB Java API can be used from
|
||
within all the popular J2EE application servers in
|
||
many different ways.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>During one of the first calls to the
|
||
Berkeley DB Java API, a DbException is thrown with a
|
||
"Bad file number" or "Bad file descriptor"
|
||
message.</strong>
|
||
</span>
|
||
<p>
|
||
There are known large-file support bugs under JNI in
|
||
various releases of the JDK. Please upgrade to the
|
||
latest release of the JDK, and, if that does not solve
|
||
the problem, disable big file support using the
|
||
--disable-largefile configuration option.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>How can I use native methods from a
|
||
debug build of the Java library?</strong>
|
||
</span>
|
||
<p>
|
||
Set Java's library path so that the debug version of
|
||
Berkeley DB's Java library appears, but the release
|
||
version does not. Berkeley DB tries to load the
|
||
release library first, and if that fails tries the
|
||
debug library.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>Why is ClassNotFoundException thrown
|
||
when adding a record to the database, when a
|
||
SerialBinding is used?</strong>
|
||
</span>
|
||
<p>
|
||
This problem occurs if you copy the db.jar file into
|
||
the Java extensions (ext) directory. This will cause
|
||
the database code to run under the System class
|
||
loader, and it won't be able to find your application
|
||
classes.
|
||
</p>
|
||
<p>
|
||
You'll have to actually remove db.jar from the Java
|
||
extension directory. If you have more than one
|
||
installation of Java, be sure to remove it from all of
|
||
them. This is necessary even if db.jar is specified in
|
||
the classpath.
|
||
</p>
|
||
<p>
|
||
An example of the exception is:
|
||
</p>
|
||
<pre class="programlisting">collections.ship.basic.SupplierKey
|
||
at java.net.URLClassLoader$1.run(Unknown Source)
|
||
at java.security.AccessController.doPrivileged(Native Method)
|
||
at java.net.URLClassLoader.findClass(Unknown Source)
|
||
at java.lang.ClassLoader.loadClass(Unknown Source)
|
||
at java.lang.ClassLoader.loadClass(Unknown Source)
|
||
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
|
||
at java.lang.Class.forName0(Native Method)
|
||
at java.lang.Class.forName(Unknown Source)
|
||
at com.sleepycat.bind.serial.StoredClassCatalog.
|
||
getClassInfo(StoredClassCatalog.java:211)
|
||
...</pre>
|
||
</li>
|
||
<li>
|
||
<span class="bold">
|
||
<strong>I'm upgrading my Java application to
|
||
Berkeley DB 4.3. Can I use the
|
||
com.sleepycat.db.internal package rather than porting
|
||
my code to the new API?</strong>
|
||
</span>
|
||
<p>
|
||
While it is possible to use the low-level API from
|
||
applications, there are some caveats that should be
|
||
considered when upgrading. The first is that the
|
||
internal API depends on some classes in the public API
|
||
such as DatabaseEntry.
|
||
</p>
|
||
<p>
|
||
In addition, the internal API is closer to the C API
|
||
and doesn't have some of the default settings that
|
||
were part of the earlier Java API. For example,
|
||
applications will need to set the DB_THREAD flag
|
||
explicitly if handles are to be used from multiple
|
||
threads, or subtle errors may occur.
|
||
</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
<div class="navfooter">
|
||
<hr />
|
||
<table width="100%" summary="Navigation footer">
|
||
<tr>
|
||
<td width="40%" align="left"><a accesskey="p" href="java_program.html">Prev</a> </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="u" href="java.html">Up</a>
|
||
</td>
|
||
<td width="40%" align="right"> <a accesskey="n" href="bdb_server.html">Next</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="40%" align="left" valign="top">Java programming notes </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="h" href="index.html">Home</a>
|
||
</td>
|
||
<td width="40%" align="right" valign="top"> Chapter 6. Berkeley DB Server</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|