私は新しくサーバー開発に携わり、Lars Vogelによる簡単なチュートリアルから始めました。 Eclipse WTPを使用したサーブレットおよびJSP開発 .
ステップバイステップこのチュートリアルに従ってください:
http://localhost:8080/
は正しいTomcatページを表示します。DAO
;そして、ここで次のプロンプトをキャッチしました:
Sep 15, 2013 3:40:39 PM org.Apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the Java.library.path: /usr/Java/packages/lib/AMD64:/usr/lib64:/lib64:/lib:/usr/lib
Sep 15, 2013 3:40:42 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.jee.server:com.filecounter' did not find a matching property.
Sep 15, 2013 3:40:43 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Sep 15, 2013 3:40:43 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Sep 15, 2013 3:40:43 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 5203 ms
Sep 15, 2013 3:40:43 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 15, 2013 3:40:43 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.42
Sep 15, 2013 3:40:45 PM org.Apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [171] milliseconds.
Sep 15, 2013 3:40:46 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 15, 2013 3:40:46 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Sep 15, 2013 3:40:46 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 2882 ms
Tomcat/lib
フォルダのコンテンツは次のとおりです。
nazar_art@nazar-desctop:/usr/local/Tomcat/Apache-Tomcat-7.0.42/lib$ ls -lg
total 6132
-rwxrwxrwx 1 nazar_art 15264 Jul 2 10:59 annotations-api.jar
-rwxrwxrwx 1 nazar_art 54142 Jul 2 10:59 catalina-ant.jar
-rwxrwxrwx 1 nazar_art 134215 Jul 2 10:59 catalina-ha.jar
-rwxrwxrwx 1 nazar_art 1581311 Jul 2 10:59 catalina.jar
-rwxrwxrwx 1 nazar_art 257520 Jul 2 10:59 catalina-tribes.jar
-rwxrwxrwx 1 nazar_art 1801636 Jul 2 10:59 ecj-4.2.2.jar
-rwxrwxrwx 1 nazar_art 46085 Jul 2 10:59 el-api.jar
-rwxrwxrwx 1 nazar_art 123241 Jul 2 10:59 jasper-el.jar
-rwxrwxrwx 1 nazar_art 599428 Jul 2 10:59 jasper.jar
-rwxrwxrwx 1 nazar_art 88690 Jul 2 10:59 jsp-api.jar
-rwxrwxrwx 1 nazar_art 177598 Jul 2 10:59 servlet-api.jar
-rwxrwxrwx 1 nazar_art 6873 Jul 2 10:59 Tomcat-api.jar
-rwxrwxrwx 1 nazar_art 796527 Jul 2 10:59 Tomcat-coyote.jar
-rwxrwxrwx 1 nazar_art 235411 Jul 2 10:59 Tomcat-dbcp.jar
-rwxrwxrwx 1 nazar_art 77364 Jul 2 10:59 Tomcat-i18n-es.jar
-rwxrwxrwx 1 nazar_art 48693 Jul 2 10:59 Tomcat-i18n-fr.jar
-rwxrwxrwx 1 nazar_art 51678 Jul 2 10:59 Tomcat-i18n-ja.jar
-rwxrwxrwx 1 nazar_art 124006 Jul 2 10:59 Tomcat-jdbc.jar
-rwxrwxrwx 1 nazar_art 23201 Jul 2 10:59 Tomcat-util.jar
更新:
チュートリアルは次のとおりです。
Linux Ubuntu 12.04へのApache Tomcat Nativeのインストール
Update2:
データアクセスオブジェクトの内容は次のとおりです。
public class FileDao {
public int getCount() {
int count = 0;
// Load the file with the counter
FileReader fileReader = null;
BufferedReader bufferedReader = null;
PrintWriter writer = null ;
try {
File f = new File("FileCounter.initial");
if (!f.exists()) {
f.createNewFile();
writer = new PrintWriter(new FileWriter(f));
writer.println(0);
}
if (writer !=null){
writer.close();
}
fileReader = new FileReader(f);
bufferedReader = new BufferedReader(fileReader);
String initial = bufferedReader.readLine();
count = Integer.parseInt(initial);
} catch (Exception ex) {
if (writer !=null){
writer.close();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return count;
}
public void save(int count) throws Exception {
FileWriter fileWriter = null;
PrintWriter printWriter = null;
fileWriter = new FileWriter("FileCounter.initial");
printWriter = new PrintWriter(fileWriter);
printWriter.println(count);
// Make sure to close the file
if (printWriter != null) {
printWriter.close();
}
}
}
そして、ここでサーブレットコード:
public class FileCounter extends HttpServlet {
private static final long serialVersionUID = 1L;
int count;
private FileDao dao;
public void init() throws ServletException {
dao = new FileDao();
try {
count = dao.getCount();
} catch (Exception e) {
getServletContext().log("An exception occurred in FileCounter", e);
throw new ServletException("An exception occurred in FileCounter"
+ e.getMessage());
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Set a cookie for the user, so that the counter does not increate
// every time the user press refresh
HttpSession session = request.getSession(true);
// Set the session valid for 5 secs
session.setMaxInactiveInterval(5);
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
if (session.isNew()) {
count++;
}
out.println("This site has been accessed " + count + " times.");
}
public void destroy() {
super.destroy();
try {
dao.save(count);
} catch (Exception e) {
e.printStackTrace();
}
}
}
まだweb.xml
を持っていません。
このトラブルを解決する方法は?
java.library.pathに見つかりません:/ usr/Java/packages/lib/AMD64:/ usr/lib64:/ lib64:/ lib:/ usr/lib
ネイティブライブラリは、次のいずれかの場所にあることが期待されています
/usr/Java/packages/lib/AMD64
/usr/lib64
/lib64
/lib
/usr/lib
ではなく
Tomcat/lib
Tomcat/lib
のファイルはすべてjar
ファイルであり、Tomcatによってclasspath
に追加され、アプリケーションで使用できるようになります。
Tomcatは、インストール先のプラットフォームでパフォーマンスを向上させるためにネイティブライブラリが必要であるため、jar
にはできません。Linuxの場合は.so
ファイル、Windowsの場合は.dll
ファイル。
プラットフォームのネイティブライブラリをダウンロードする だけで、Tomcatが想定している場所の1つに配置します。
開発/テストの目的でこのライブラリを用意する必要はありません。 Tomcatは、それなしでも正常に動作します。
org.Apache.catalina.startup.Catalina start INFO:2882ミリ秒でのサーバーの起動
編集
取得する出力は非常に正常で、Tomcatからのログ出力の一部に過ぎません。上記の行は、サーバーが正常に起動し、動作準備ができていることを示しています。
サーブレットの実行に問題がある場合、run on sever
コマンドの後、Eclipseはブラウザーウィンドウを開きます(埋め込み(デフォルト)または外部、構成によって異なります)。ブラウザに何も表示されない場合は、ブラウザのURLバーをチェックして、サーブレットが要求されたかどうかを確認してください。
それはそのようなものでなければなりません
http://localhost:8080/<your-context-name>/<your-servlet-name>
EDIT 2
次のURLを使用してサーブレットを呼び出してみてください
http://localhost:8080/com.filecounter/FileCounter
また、各Webプロジェクトにはweb.xmlがあり、プロジェクトのWebContent\WEB-INF
の下にあります。
servlet-name
servlet-class
およびurl-mapping
を使用して、そこにサーブレットを構成することをお勧めします。次のようになります。
<servlet>
<description></description>
<display-name>File counter - My first servlet</display-name>
<servlet-name>file_counter</servlet-name>
<servlet-class>com.filecounter.FileCounter</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>file_counter</servlet-name>
<url-pattern>/FileFounter</url-pattern>
</servlet-mapping>
Eclipse動的Webプロジェクトでは、デフォルトのコンテキスト名はプロジェクト名と同じです。
http://localhost:8080/<your-context-name>/FileCounter
も動作します。
タイトルで尋ねられた元の質問について...
Sudo apt-get install libtcnative-1
または、RHEL Linux yum install Tomcat-native
を使用している場合
必要なドキュメントの状態 http://Tomcat.Apache.org/native-doc/
Sudo apt-get install libapr1.0-dev libssl-dev
yum install apr-devel openssl-devel