mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 17:16:25 +00:00
169 lines
7.5 KiB
HTML
169 lines
7.5 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="csharp.html" title="Chapter 6. C# API" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 11.2.5.2</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="csharp.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="csharp.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. C# API</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|