que - servlet java ejemplo
La biblioteca nativa Apache Tomcat basada en APR no se encontrĂ³ en java.library.path (2)
no encontrado en java.library.path: / usr / java / packages / lib / amd64: / usr / lib64: / lib64: / lib: / usr / lib
La lib nativa se espera en una de las siguientes ubicaciones
/usr/java/packages/lib/amd64
/usr/lib64
/lib64
/lib
/usr/lib
y no en
tomcat/lib
Los archivos en tomcat/lib
son todos archivos jar
y son agregados por tomcat a classpath
para que estén disponibles para su aplicación.
El tomcat necesita lib nativo para funcionar mejor en la plataforma en la que está instalado y, por lo tanto, no puede ser un jar
, para linux podría ser un archivo .so
, para Windows podría ser un archivo .dll
.
Simplemente descargue la biblioteca nativa para su plataforma y colóquela en una de las ubicaciones que tomcat espera que sea.
Tenga en cuenta que no es necesario tener esta lib para fines de desarrollo / prueba. Tomcat funciona bien sin eso.
org.apache.catalina.startup.Catalina start INFO: Inicio del servidor en 2882 ms
EDITAR
La salida que está obteniendo es muy normal, solo se trata de algunas salidas de registro de tomcat, la línea de arriba indica que el servidor se inició correctamente y está listo para funcionar.
Si tiene problemas para ejecutar su servlet, luego de que se run on sever
comando run on sever
eclipse abre una ventana del navegador (incrustado (predeterminado) o externo, depende de su configuración). Si no se muestra nada en el navegador, verifique la barra de direcciones del navegador para ver si se solicitó o no su servlet.
Debería ser algo así
http://localhost:8080/<your-context-name>/<your-servlet-name>
EDIT 2
Intenta llamar a tu servlet usando la siguiente URL
http://localhost:8080/com.filecounter/FileCounter
Además, cada proyecto web tiene un web.xml, puede encontrarlo en su proyecto en WebContent/WEB-INF
.
Es mejor configurar sus servlets allí usando servlet-name
servlet-class
y url-mapping
. Podría verse así:
<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>
En el proyecto web dinámico de eclipse, el nombre de contexto predeterminado es el mismo que el nombre de su proyecto.
http://localhost:8080/<your-context-name>/FileCounter
funcionará también
Recientemente estoy en el desarrollo de servidores y Lars Vogel comenzó con un sencillo tutorial. Desarrollo de servlets y JSP con Eclipse WTP .
Paso a paso de acuerdo con este tutorial:
- instalado Eclipse Java EE Kepler;
- instalado tomcat 7 en Ubuntu 12.04 -
http://localhost:8080/
muestra la página correcta de tomcat; - Configuración de entornos de tiempo de ejecución Tomcat en Eclipse;
- servidor Tomcat agregado para eclipsar;
- crear
DAO
; - creó el Servlet;
- ejecutar =>
Y aquí cogí el próximo aviso:
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
Aquí está el contenido de la carpeta 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
Aquí está el contenido de catalina.2013-09-15.log .
Actualizar:
Aquí hay un tutorial:
Instalación de Apache Tomcat Native en Linux Ubuntu 12.04
Actualización2:
Aquí está el contenido del objeto de acceso a datos:
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();
}
}
}
Y aquí código de Servlet:
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();
}
}
}
Todavía no he tenido web.xml
.
¿Cómo resolver este problema?
En cuanto a la pregunta original formulada en el título ...
sudo apt-get install libtcnative-1
o si está en RHEL Linux
yum install tomcat-native
La documentación indica que necesita http://tomcat.apache.org/native-doc/
-
sudo apt-get install libapr1.0-dev libssl-dev
- o RHEL
yum install apr-devel openssl-devel