Tag: tomcat

为防止内存泄漏,JDBC驱动程序已被强制注销

当我运行我的Web应用程序时,我收到了这条消息。 它运行良好,但在关机期间收到此消息。 SEVERE:Web应用程序注册了JBDC驱动程序[oracle.jdbc.driver.OracleDriver],但在Web应用程序停止时未能取消注册。 为防止内存泄漏,JDBC驱动程序已被强制注销。 任何帮助赞赏。

如何通过Maven正确安装和configurationJSF库?

我试图将一个基于JSF的应用程序部署到Tomcat 6.我的构build系统的设置方式,WAR本身没有任何库,因为这个服务器总共提供了43个应用程序。 而是将库复制到共享库文件夹中,并在应用程序之间共享。 当我部署时,我得到这个错误 SEVERE: Error deploying configuration descriptor SSOAdmin.xml java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/faces/webapp/FacesServlet at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1667) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at […]

如何在Tomcat 7.0中设置Web应用程序的上下文path

我知道我可以重命名我的webapp(或它的WAR文件)到ROOT,但这是一个可怕的方式来做到这一点,恕我直言。 现在我检查了tomcat文档,它说 不build议将元素直接放在server.xml文件中 所以我尝试了另一种方法。 单独的上下文元素可以被明确地定义:在/META-INF/context.xml里的应用程序文件中的单个文件中。 所以我用下面的代码创build了一个/META-INF/context.xml , <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/"/> 但是在部署完成后,当我重新启动服务器时,它仍然无法在“/”加载上下文,但仍然加载了"/<WEB_APP_NAME>" 任何指针都有帮助。

臭名昭着的java.sql.SQLException:找不到合适的驱动程序

我试图添加一个数据库启用的JSP到现有的Tomcat 5.5应用程序(GeoServer 2.0.0,如果有帮助的话)。 该应用程序本身与Postgres会谈很好,所以我知道数据库已经启动,用户可以访问它,所有这些好东西。 我想要做的是在我添加的JSP中的数据库查询。 我已经很好的使用了Tomcat数据源示例中的configuration示例。 必需的标签库位于正确的位置 – 如果我只有标签库引用,就不会出现错误,因此它正在查找这些JAR。 postgres jdbc驱动程序postgresql-8.4.701.jdbc3.jar位于$ CATALINA_HOME / common / lib中。 这是JSP的顶部: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <sql:query var="rs" dataSource="jdbc/mmas"> select current_validstart as ValidTime from runoff_forecast_valid_time </sql:query> $ CATALINA_HOME / conf / server.xml中的相关部分,在<Host>中又是在<Engine> : <Context path="/gs2" allowLinking="true"> <Resource name="jdbc/mmas" type="javax.sql.Datasource" auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="30" maxWait="10000" […]

如何获得UTF-8在Java webapps中的工作?

我需要在我的Java webapp(servlets + JSP,不使用框架)中使用UTF-8来支持常规芬兰语文本和西里尔文字母,如特殊情况下的ЦжФ 。 我的设置如下: 开发环境:Windows XP 生产环境:Debian 使用的数据库:MySQL 5.x 用户主要使用Firefox2,但也使用Opera 9.x,FF3,IE7和Google Chrome访问该站点。 如何做到这一点?

在Java Web应用程序中从应用程序服务器外部提供静态数据的最简单方法

我有一个Java Web应用程序,使用Spring和Struts,运行在Tomcat 5.5上。 我想加载静态图像,这些图像将显示在Web UI和应用程序生成的PDF文件中。 此外,新的图像将通过Web UI进行上传和保存。 通过将静态数据存储在Web容器中,但是从Web容器外部存储和加载静态数据,这不是一个问题,这让我很头痛。 我宁愿不使用像Apache这样的单独的Web服务器来为静态数据提供服务。 我也不喜欢在二进制数据库中存储图像的想法。 我已经看到了一些build议,例如将图像目录作为指向web容器外的目录的符号链接,但是这种方法是否可以在Windows和* nix环境中使用? 有些人build议编写一个filter或一个servlet来处理图像服务,但是这些build议非常模糊和高层次,没有提供关于如何完成这个任务的更详细信息的指针。

官方原因“软件导致连接中止:套接字写入错误”

给定这个堆栈跟踪片段 导致:java.net.SocketException:软件导致连接中止:套接字写入错误 在java.net.SocketOutputStream.socketWrite0(本地方法) 我试图回答以下问题: 什么代码抛出这个exception? (JVM?/ Tomcat?/我的代码?) 是什么导致这个exception被抛出? 关于#1: Sun的JVM源不包含这个确切的消息,但我认为文本软件导致连接中止:套接字写入错误是从本地实现SocketOutputStream : private native void socketWrite0(FileDescriptor fd, byte[] b, int off, int len) throws IOException; 关于#2 我的猜测是,这是当客户端已经终止连接,在得到完整的响应之前(例如发送请求,但在得到完整的响应之前,它被closures/终止/离线) 问题: 上述假设是否正确(#1和#2)? 这可以从这种情况分歧:“由于服务器端的networking错误,无法写入客户端”? 或者会呈现相同的错误信息? 最重要的是 : 是否有官方文件(例如来自Sun)说明上述情况? 我需要certificate这个堆栈跟踪是套接字客户端的“错误”,并且服务器没有办法避免它。 (除了捕获这个exception,或者使用一个非Sun Java虚拟机的SocketOutputStream,虽然两者都不能真正避免客户端终止的事实)

将上传的文件保存在servlet应用程序中的推荐方法

我在这里读到,不应该将文件保存在服务器中,因为它不是可移植的,事务性的并且需要外部参数。 但是,鉴于我需要一个tomcat(7)的tmp解决scheme,并且我有(相对)对服务器机器的控制,我想知道: 什么是保存文件的最佳地点? 我应该将其保存在/WEB-INF/uploads (在这里build议)还是在$CATALINA_BASE (见这里 )或…下的某个地方? JavaEE 6教程从用户 (:wtf 🙂 获取path 。 注:文件不得以任何方式下载。 我应该如何设置一个configuration参数? 我会欣赏一些代码(我宁愿给它一个相对path – 所以它至less是Tomcat便携式) – Part.write()看起来很有前途 – 但显然需要一个绝对path 我会对这种方法与数据库/ JCR存储库的缺点进行阐述感兴趣 不幸的是,@BalusC的FileServlet专注于下载文件,而他在上传文件方面的答案跳过了保存文件的部分。 一个易于转换为使用DB或JCR实现(如jackrabbit )的解决scheme将是更可取的。

什么导致我的java.net.SocketException:连接重置?

我们看到频繁的java.net.SocketException: Connection reset在我们的日志中为调用发送SMS消息的第三方Web服务的组件java.net.SocketException: Connection reset错误。 我们的应用程序是用Java编写的,运行在Tomcat 5.5之上。 这是由不再和我们在一起的承包商写的。 目前的团队没有真正的Java专业知识,我们不确定Connection reset错误实际来自何处,以及如何进行调试。 这个问题似乎完全是间歇性的,与我们试图发送的消息无关。 对于这个例外的典型原因可能是什么以及我们如何继续下去的任何建议都是值得欢迎的。 整个调用堆栈包含在内,以确保完整性。 ( com.companyname.mtix.sms是我们的组件) java.net.SocketException:连接重置 在java.net.SocketInputStream.read(SocketInputStream.java:168) 在java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 在java.io.BufferedInputStream.read(BufferedInputStream.java:235) 在org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77) 在org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) 在org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115) 在org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832) 在org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590) 在org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995) 在org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397) 在org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) 在org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) 在org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) 在com.companyname.mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127) 在com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125) 在com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43) 在sun.reflect.GeneratedMethodAccessor203.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:585) 在org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) 在org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) 在org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 在org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 在org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 在org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 在org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) 在org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 在org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 在org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在com.companyname.mtix.sms.http.filters.NoCacheFilter.doFilter(NoCacheFilter.java:63) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在com.companyname.mtix.sms.http.filters.MessageFilter.doFilter(MessageFilter.java:53) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) […]

我应该如何在基于servlet的应用程序中连接到JDBC数据库/数据源?

我有一个外部的MySQL服务器设置和工作正常。 我在Eclipse中创建了一个数据库连接,并可以在“数据源浏览器”选项卡中查看数据库。 现在,我有一个需要访问该数据库的servlet。 我该怎么做? 有没有办法引用在数据源资源管理器中创建的数据库连接,还是我必须定义两次? 另外,打开连接的最佳方式是什么? 我已经包含了mysql-connector-java-5.1.11-bin.jar文件,并且发现了两种工作方式: MysqlDataSource d = new MysqlDataSource(); d.setUser("user"); d.setPassword("pass"); d.setServerName("hostname.com"); d.setDatabaseName("db"); Connection c = d.getConnection(); 和 Connection c = DriverManager.getConnection("jdbc:mysql://hostname.com/db","user","pass"); 既不是最佳的,因为首先,他们都使用硬编码的字符串的一切。 这是一个Java EE的Web应用程序项目,那么有一个好的地方可以把连接数据? 或者有没有办法放弃所有这一切,只是在数据源浏览器中使用连接?