我正在使用IBM Websphere Application Server v6和Java 1.4,并试图将大型CSV文件写入ServletOutputStream以供用户下载。 目前文件从50-750MB不等。 较小的文件不会造成太多的问题,但是对于较大的文件,它看起来正在写入堆中,然后导致出现OutOfMemory错误并closures整个服务器。 这些文件只能通过HTTPS传递给已通过身份validation的用户,这就是为什么我通过Servlet服务他们,而不是将他们粘在Apache中。 我使用的代码是(在这个附近删除了一些绒毛): resp.setHeader("Content-length", "" + fileLength); resp.setContentType("application/vnd.ms-excel"); resp.setHeader("Content-Disposition","attachment; filename=\"export.csv\""); FileInputStream inputStream = null; try { inputStream = new FileInputStream(path); byte[] buffer = new byte[1024]; int bytesRead = 0; do { bytesRead = inputStream.read(buffer, offset, buffer.length); resp.getOutputStream().write(buffer, 0, bytesRead); } while (bytesRead == buffer.length); resp.getOutputStream().flush(); } finally { […]
有人能告诉我javacore,线程转储和堆转储之间的确切区别吗? 在哪种情况下,每一种都被使用?
将Singleton对象重构为集群环境的最佳策略是什么? 我们使用Singleton从数据库caching一些自定义信息。 它主要是只读的,但在发生某些特定事件时会刷新。 现在我们的应用程序需要部署在一个集群环境中。 根据定义,每个JVM将有它自己的Singleton实例。 因此,当单个节点上发生刷新事件并刷新其caching时,JVM之间的caching可能会不同步。 保持caching同步的最佳方法是什么? 谢谢。 编辑:caching主要用于向用户界面提供自动完成列表(性能原因),我们使用Websphere。 所以任何Websphere相关的技巧欢迎。
我正在研究使用Spring和Hibernate的Java应用程序,并在Websphere上运行。 我遇到了一个问题,我希望Spring将Dao加载到我的对象中,但由于某种原因,这并没有发生。 (以同样方式指定的另一个Dao加载正常。) 问题是 – 我怎样才能debuggingSpring如何决定如何加载? 我可以打开日志logging的spring,在哪里?
我们在两个不同的实际办公地点有两个不同的ldap供应商。 当我将我的笔记本电脑连接到一个位置,并且从端口(在Websphere 6.1中)中检索以导入ldap提供程序的ssl证书时,我可以在没有问题的情况下对相应的ldap进行身份validation。 如果我将笔记本电脑带到另一个办公室(默认情况下使用其他ldap提供程序),并且我插入笔记本电脑,笔记本电脑上的笔记本计算机将无法启动,因为它显示“找不到可信的ssl证书”。 如果我再次从端口检索并重新导入证书,那么它再次工作。 请注意,我的WAS总是尝试连接到一个LDAP,它只是没有用于另一个。 如果我回到其他办公室,我会得到同样的错误,直到我从该位置重新导入。 ldap连接点是ldap.something.com:636,并且可以在两个位置使用相同的FQDN进行ping。 但是,当它钉在每个办公室的位置解决了不同的IP地址。 为什么我看到这种行为? SSL Certs是否以某种方式绑定到特定的IP地址? 如果是,那么我需要为每个办公地点维护一套不同的证书,对吧? 请注意,没有办法调整DNS服务器来parsing主机名到相同的IP地址,我检查。 有人可以提供一些见解吗?
我的JSP页面上有一个对象的variables: <%= ansokanInfo.getPSystem() %> 该variables的值是正确的NAT,我想为此值应用某些页面元素。 如何使用标签知道案件? 我试过类似的东西 <c:if test = "${ansokanInfo.getPSystem() == 'NAT'}"> process </c:if> 但是上面没有显示任何东西。 我应该怎么做? 或者我也可以使用脚本,即 <% if (ansokanInfo.getPSystem().equals("NAT"){ %> process <% } %> 感谢您的任何答复或评论。
上次我创buildWASconfiguration文件和WASService,然后我尝试configuration和运行许多脚本,学习如何configurationWAS,最后它崩溃,所以我使用wasprofile删除此configuration文件,并忘记删除WASService。 现在我发现IBM Webphere Application Server服务显示在services.msc列表中,所以我试图用WASService.exe -remove命令和windows SC命令删除它,但是我得到了消息 C:\Program Files\IBM\WebSphere\AppServer\bin>sc delete "IBMWAS61Service – DEV" [SC] DeleteService FAILED 1072: The specified service has been marked for deletion.
我的应用程序将被部署在tcServer和WebSphere 6.1上。 此应用程序使用ehCache,因此需要slf4j作为依赖项。 因此,我已经将slf4j-api.jar(1.6)jar添加到我的war文件包中。 该应用程序在tcServer中正常工作,除了以下错误: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 但是,当我在WebSphere中部署时,我得到一个java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder 。 我已经检查了两个应用程序服务器的类path,没有其他的slf4j jar。 有没有人有任何想法可能发生在这里?