我在/template/template.xhtml上有一个template.xhtml文件
<h:head>
</h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="100">
<h:outputText value="header"></h:outputText>
</p:layoutUnit>
<p:layoutUnit position="center">
<p:layout>
<p:layoutUnit position="north">
<h:outputText value="tabs"/>
<ui:include src="/tabs/tabs.xhtml"/>
</p:layoutUnit>
<p:layoutUnit position="west">
<h:outputText value="left menu"></h:outputText>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:outputText value="main-content"></h:outputText>
</p:layoutUnit>
</p:layout>
</p:layoutUnit>
<p:layoutUnit position="south" size="100">
<h:outputText value="footer"></h:outputText>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
我在/tabs/tabs.xhtml上有tabs.xhtml文件
<h:head>
</h:head>
<p:tabMenu activeIndex="#{param.i}">
<p:menuitem value="Overview" outcome="index">
<f:param name="i" value="0" />
</p:menuitem>
<p:menuitem value="Demos" outcome="index">
<f:param name="i" value="1" />
</p:menuitem>
<p:menuitem value="Documentation" outcome="index">
<f:param name="i" value="2" />
</p:menuitem>
<p:menuitem value="Support" outcome="index">
<f:param name="i" value="3" /> …Run Code Online (Sandbox Code Playgroud) 我在用户点击菜单时更新我的数据表.所以我想显示一些加载图像,而ajax获取数据并更新我的数据表.我为此目的使用p:blockUI.我的菜单是:
<h:form id="leftMenu">
<p:menu id="privilegeItem">
<p:menuitem id="objectItem"
actionListener="#{selectSignMethodView.changeSignMethods('object')}"
value="Object Signing Services"
update=":signMethodForm:signMethodTable"/>
<p:menuitem id="mobileItem"
actionListener="#{selectSignMethodView.changeSignMethods('mobile')}"
value="Mobile Signing Services"
update=":signMethodForm:signMethodTable"/>
<p:menuitem id="macItem"
actionListener="#{selectSignMethodView.changeSignMethods('mac')}"
value="Mac Signing Services"
update=":signMethodForm:signMethodTable"/>
<p:menuitem id="solarisItem"
actionListener="#{selectSignMethodView.changeSignMethods('solaris')}"
value="solaris Signing Services"
update=":signMethodForm:signMethodTable"/>
</p:menu>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我的数据表是这样的:
<h:form prependId="false" id="signMethodForm">
<p:dataTable id="signMethodTable"
value="#{selectSignMethodView.signMethodList}"
var="signMethods">
<p:column>
<h:outputText value="${signMethods.name}"/>
</p:column>
<p:column>
<h:outputText value="#{signMethods.fileTypes}" />
</p:column>
<p:column>
<h:outputText value="#{signMethods.servers}"/>
</p:column>
</p:dataTable>
<p:blockUI trigger=":leftMenu:privilegeItem" block="signMethodTable">
LOADING<br />
<p:graphicImage library="images" name="ajax-loader.gif"/>
</p:blockUI>
</h:form>
Run Code Online (Sandbox Code Playgroud)
但是blockUI没有阻止我的数据表.我的触发器属性有问题.
我正在使用tomcat连接池.但我跟随例外
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
所以我在context.xml中输入以下行来查找泄漏:
removeAbandoned="true" logAbandoned="true" removeAbandonedTimeout="3"
然后我开始得到以下异常org.apache.tomcat.dbcp.dbcp.AbandonedTrace$AbandonedObjectException: DBCP object created 2015-01-17 22:12:18 by the following code was never closed:
因此我发现导致这种泄漏的两个罪魁祸首方法.这两种方法有通用的连接方式,即调用unwrap来访问驱动程序特定的连接.
try (Connection conn = DataSourceConnectionPool.getConnection().unwrap(OracleConnection.class);
OracleCallableStatement cstmt = (OracleCallableStatement) conn.prepareCall(MIGRATE_ACCOUNT)) {
...
....
)
Run Code Online (Sandbox Code Playgroud)
重要的是要注意的是我正在使用来自JDK7的try块,即自动资源管理,所以我不需要finally块.连接关闭由JDK自动处理.但为什么这个解开的连接没有关闭.当我试图做以下事情时:
try (Connection poolConn = DataSourceConnectionPool.getConnection();
Connection conn = poolConn.unwrap(OracleConnection.class);
Run Code Online (Sandbox Code Playgroud)
我越来越java.sql.SQLException: Already closed.接近这种联系了.我是否必须手动完成而不使用try块?不应该尝试块手柄能够处理这个吗?
我的客户端将文件上传到我的Web应用程序,在该应用程序中处理文件并将文件返回给客户端.我的客户端是用java编写的,服务器端应用程序也是用servlet编写的.我的问题是在处理时出现一些错误,如何从服务器向客户端发送错误.因此客户端不会下载文件,而只是通过打印错误退出.我不知道这个消息与客户沟通的标准方式是什么.我目前正在做的是使用response.setHeader:
response.setHeader("codesign-status", "0");
response.setHeader("codesign-msg", "File available for download ");
Run Code Online (Sandbox Code Playgroud)
我正在客户端连接上读取这些标头以检查错误.这是与客户沟通消息的标准方式吗?