如何在没有用户交互的情况下运行servlet

时间:2009-08-21 08:12:57

标签: java servlets contextpath

我想执行一个servlet来获取服务器名称,服务器端口和ContextPath。 但我不想通过用户交互来调用servlet。我想用Java代码来执行这个servlet。 我不确定这是可能的。 请给我推荐。

4 个答案:

答案 0 :(得分:3)

为什么不只是简单地使用URL来请求servlet。

如需更复杂的使用,请尝试HttpClient

答案 1 :(得分:2)

如果您的意思是只想执行一些代码来从请求中提取信息,那么为什么要尝试调用servlet?只需在某处写一个方法,然后调用它。

您还可以使用Servlet过滤器在每个请求中提取此信息,将结果作为属性添加到HttpServletRequest对象,以便处理请求的任何其他servlet都可以找到并使用它。

如果您想在启动时加载servlet,可以在web.xml配置中添加:

<servlet>
  ...
  <load-on-startup>1</load-on-startup>
</servlet>

答案 2 :(得分:1)

如果你的servlet正在做一些事情,比如在没有用户交互的情况下每x分钟调用一次服务,那么你可能想做一些不同的事情。

您可以使用ServletContextListener收听启动网络上下文的时间,然后启动您想要的任何代码。

http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html

答案 3 :(得分:0)

感谢您的回答 实际上,我的问题是:我有一个Web应用程序和一个WebService(在不同的服务器上)。 我希望Web应用程序调用webservice(在特定持续时间之后)将数据(域,端口,上下文路径...)发送到webservice,以便我可以知道我的Web应用程序的部署位置。

为了解决这个问题,我创建了一个servlet来调用WebService,通过使用这个servlet我有HttpServletRequest对象,我可以得到域,端口,上下文路径。然后我可以将数据发送到webservice。 但我不知道如何在没有用户交互的情况下执行此servlet(在特定持续时间之后)