2

我可以在一些论坛中看到他们将 struts 标签初始化为

<%@taglib prefix="html" uri="http://struts.apache.org/tags-html" %>

他们正在初始化标签<html:form>等。

但我使用 struts 标签作为

<%@taglib prefix="s" uri="/struts-tags" %> 

并用作<s:form>标签。我的问题是,struts<html:form>标签和<s:form>标签之间是否有任何区别,或者它们只有前缀变化。


java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?):JVM_Bind

Tomcat 在 Windows 下运行一个 webapp。几天后(在非常低的负载下),标题中提到的异常开始出现在日志中,从那时起无法建立新的连接,唯一的解决方法是重新启动服务器。

环境:

  • 最新的 Tomcat 6
  • 视窗服务器 2008 R2
  • JDK 6 更新 30
  • SQL Server 2008
  • Kerberos 身份验证

目前收集的证据:

  • netstat 显示没有过多的连接
  • ProcessExplorer 显示没有过多的打开文件句柄
  • 系统主内存使用率平均
  • JVM 堆使用率平均
  • 重启Tomcat并没有解决问题

开放式问题:

  • 如果我们泄漏了连接,它们不应该出现在 netstat 中吗?
  • 重新启动应用服务器不应该解决问题吗,因为操作系统应该释放所有进程资源?
  • 有没有办法追踪问题的根源?例如安装监控软件,可能类似于 lsof 等?

我没有想法,任何提示表示赞赏!

4

2 回答 2

1

我对 Struts1 不太了解,但如果我是正确的,你提到<html:form>的那个来自经典 Struts1,<s:form>来自 S2。

基本上,您可以使用任何前缀在 S2 标签中定义,例如a, b,c 等。如果您希望可以自由使用 html 作为前缀,您需要告诉 S2 类似

<%@taglib prefix="html" uri="/struts-tags" %> 

简而言之,它唯一的声明和使用s作为前缀是一种约定。

于 2012-04-10T12:13:39.637 回答
0

taglib 声明设置了前缀是什么,只要您保持一致并引用相同的 taglib,您使用的前缀就没有区别。

于 2012-04-10T12:13:32.403 回答