Tag: tomcat

web.xml中的白名单安全性约束

我正在使用Tomcat作为我的Struts2应用程序。 web.xml有一些条目,如下所示: restricted methods /* PUT DELETE TRACE no_access /jsp/* no_access /myrrunner/* 如何更改以上列入黑名单的部分仅使用白名单部分…例如,我不需要将其他方法列入白名单,而是将其列入白名单,但我不确定将白名单列入白名单的语法以及将白名单列入白名单的方法。 对于我上面的web.xml片段,如果有人可以为xml以上提供whitelisitng计数器部分,我将不胜感激。 编辑:另外,我如何真正validation解决方案是否有效? 谢谢

是否有Tomcat / Java的URL重写引擎?

我们如何为Tomcat / Java提供URL重写支持? mod_rewrite为Apache提供此function,甚至可以在URL到达处理程序之前修改URL(例如PHP)。 Java / Tomcat中是否有类似的工具? 更具体地说,我们需要修改,例如 http://www.somedomain.com/person/1 地图到 http://www.somedomain.com/details?personId=1 这应该对servlet代码透明,即我们应该能够访问servlet中的request.getParameter(“personId”)并获取personId(在本例中为1)。 你遇到过这种情况吗? 你用了什么工具? 很想听听你的建议。

编译JSP Java(* __ jsp.java)文件在哪里?

我在我的网站试图渲染的一个jsp文件中获得了javax.servlet.jsp.JspException ( survey.jsp )。 但是,堆栈跟踪没有给出jsp中失败的特定行,而是它失败的行号( survey_jsp.java:787 ),它似乎是已编译的JSP文件。 我在哪里可以找到这样的文件,以便我知道抛出此exception的行是什么? 谢谢 编辑:如果你正在使用tomcat,这些文件存在于/work目录中,如下面的评论所示。

关闭tomcat时停止计划的计时器

我有一个部署到Tomcat服务器的WAR文件,其中一个类将在启动时调用,然后init()方法将安排一个计时器每5小时触发一次以执行某些任务。 我的init()代码如下所示: public void init() { TimerTask parserTimerTask = new TimerTask() { @Override public void run() { XmlParser.parsePage(); } }; Timer parserTimer = new Timer(); parserTimer.scheduleAtFixedRate(parserTimerTask, 0, PERIOD); } 我的应用程序运行没有问题,但当我使用/etc/init.d/tomcat7停止关闭Tomcat时,我检查日志(catalina.out)它有一个这样的条目: 严重:Web应用程序[/ MyApplication]似乎已经启动了一个名为[Timer-0]的线程,但未能阻止它。 这很可能造成内存泄漏。 我明白这是由我安排计时器引起的,但我的问题是: 我没有将setDeamon设置为true,所以定时器不应该阻止Tomcat关闭,而不是继续运行? 我可以在我的应用程序中检测Tomcat是否会关闭并取消我的计时器? 我可以用什么其他解决方案来解决这个问题? 谢谢! UPDATE 我根据一些搜索和DaveHowes的答案将我的代码更改为以下内容。 Timer parserTimer; TimerTask parserTimerTask; public void init() { parserTimerTask = new TimerTask() { @Override public […]

我在哪里为Tomcat的连接池放置JDBC驱动程序?

所以我已经弄清楚了我的错误,现在我只是在寻找一些关于究竟发生了什么的见解。 我正在使用Apache Tomcat版本7.0.32。 我正在使用本教程为JDBC设置池。 在我的META-INF文件夹中,我创建了一个context.xml文件并将其放在那里。 我写这篇文章时遇到了这个错误 WARNING: Unexpected exception resolving reference java.sql.SQLException: com.mysql.jdbc.Driver at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254) at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:699) at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:631) at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:485) at org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:143) at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116) at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103) at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:539) at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237) at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) at org.apache.naming.NamingContext.lookup(NamingContext.java:843) at org.apache.naming.NamingContext.lookup(NamingContext.java:154) at org.apache.naming.NamingContext.lookup(NamingContext.java:831) at org.apache.naming.NamingContext.lookup(NamingContext.java:168) at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1061) at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:671) at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:270) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) […]

将特定servlet映射为Tomcat中的缺省servlet

我正在尝试实现一个获取原始请求的servlet,并决定处理它们,还是将它们转发到另一个后端服务器。 它类似于负载均衡器,其中收到的请求被转发到(在我的情况下为2)目的地之一。 其中一个目标是远程(在另一台主机上)。 此外,请求可以到根( http://mycompany.com/ )。 因为我想获得原始请求,所以我实现了自己的servlet(子类化HttpServlet ),这非常HttpServlet 。 我的servlet看起来像: public class MyProxyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { processOrForward(req, resp); } // also doGet(), doHead(), … } 由于我想要处理的服务可以向root发送请求,我想将我的servlet映射为默认的servlet,从而接收任何没有显式servlet映射的请求。 假设我的servlet的名称是“myservlet”,并且正在另一个servlet“foo”的一侧运行,我希望所有以http://mycompany.com/foo/ …forms发出的请求都被传递给foo,以及一切else(例如/,/ bar / …,/ myservlet / …)到“myservlet”。 看一下之前的post(例如, 这里和这里的根映射,或者这里的 url重写),我以为我想出来了,但它不起作用。 这是我的web.xml : ProxyServlet com.mycompany.MyProxyServlet 1 ProxyServlet /* […]

如何在Tomcat中设置请求编码?

我的Java webapp中存在问题。 这是index.jsp中的代码: JSP Page Hello World! Res: 当我发送请求时,我的浏览器会发送此标头: GET /kjd/index.jsp?q=%C3%A9 HTTP/1.1\r\n … Accept-Charset: UTF-8,*\r\n Tomcat服务器将此返回给我: Content-Type: text/html;charset=UTF-8\r\n 但是如果我在表格中发送“é”(UTF-8中的%C3%A9),则会显示“é”。 我的理解是浏览器发送一个用UTF-8(%C3%A9)编码的“é”。 但服务器将其解释为ISO-8859-1。 所以%C3被解码为Ã而%A9被解码为©,然后发回以UTF-8编码的响应。 在代码中,请求应使用UTF-8解码: request.setCharacterEncoding(“UTF-8”); 但是,如果我发送这个url: http://localhost:8080/kjd/index.jsp?q=%E9 “%E9”用ISO-8859-1表示,显示“é”。 为什么这不起作用? 为什么请求使用ISO-8859-1进行解码? 我在Tomcat 6和7以及Windows和Ubuntu上尝试过它。

如何配置Tomcat以连接MySQL

有人可以提供一些关于如何配置Tomcat来访问MySQL的细节吗? 我在Tomcat中的哪个目录下放置mysql-connector-java-5.1.13-bin ? 我应该将它放在Tomcat 6.0\webapps\myapp\WEB-INF\lib吗? 我是否需要将配置添加到context.xml或server.xml ? 我应该创建一个web.xml文件并将其放在Tomcat 6.0\webapps\myapp\WEB-INF吗? 如果是这样,那么这个文件的内容应该是什么样的?