我的应用程序将部署在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.
Run Code Online (Sandbox Code Playgroud)
但是,当我在WebSphere中部署时,我得到了一个java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder
.
我检查了两个应用程序服务器的类路径,没有其他的slf4j jar.
有没有人有任何想法可能会发生在这里?
上次我创建WAS配置文件和WASService然后我尝试配置并运行许多脚本以了解如何配置WAS,最后它崩溃所以我使用wasprofile删除此配置文件并忘记删除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.
Run Code Online (Sandbox Code Playgroud) 我在JSP页面上有一个来自对象的变量:
<%= ansokanInfo.getPSystem() %>
变量的值是NAT,这是正确的,我想为这个值应用某些页面元素.如何使用标签来了解案例?我试过类似的东西
<c:if test = "${ansokanInfo.getPSystem() == 'NAT'}">
process
</c:if>
Run Code Online (Sandbox Code Playgroud)
但上面没有显示任何内容.我该怎么办?或者我也可以使用scriptlet即
<% if (ansokanInfo.getPSystem().equals("NAT"){ %>
process
<% } %>
Run Code Online (Sandbox Code Playgroud)
感谢您的任何回答或评论.
我们在两个不同的物理办公地点有两个不同的ldap提供商.
当我将笔记本电脑连接到一个位置并且我从端口'(在Websphere 6.1中)检索以导入ldap提供程序的ssl证书时,我可以在没有问题的情况下对相应的ldap进行身份验证.如果我将笔记本电脑带到另一个办公室(默认情况下使用其他ldap提供商)并且我插入笔记本电脑,我的笔记本电脑上的WAS将无法启动,因为它显示"找不到可靠的ssl证书".
如果我再次从端口'检索并重新导入证书,那么它再次起作用.
请注意,我的WAS总是尝试连接到一个ldap,它对另一个没有用.
如果我回到另一个办公室,我会得到同样的错误,直到我从该位置重新导入.ldap连接点是ldap.something.com:636,并且在具有相同FQDN的两个位置都可以ping.
但是当它被ping时,它会解析为每个办公地点的不同IP地址.为什么我会看到这种行为?
SSL Certs是否以某种方式绑定到特定的IP地址?
如果是,那么我需要为每个办公地点维护一套不同的证书,对吧?
请注意,我检查过无法调整dns服务器以将主机名解析为相同的IP地址.
有人能提供一些见解吗?
我正在开发一个使用Spring和Hibernate并在Websphere上运行的Java应用程序.我遇到了一个问题,我希望Spring将Dao加载到我的对象中,但由于某种原因,这种情况不会发生.(用同样的方式指定的另一个Dao被装好了.)
问题是 - 我如何调试Spring如何决定加载什么?我可以打开Spring的日志记录,在哪里?
有人能告诉我javacore,线程转储和堆转储之间的确切区别吗?在哪种情况下使用这些?
我试图了解更多Transfer-Encoding:chunked
.在PHP中引用了一些文章:http:
//zoompf.com/blog/2012/05/too-chunky和"Transfer-Encoding:chunked"标题.
我仍然没有得到非常清晰的画面.我知道设置此编码允许服务器将块中的内容设置为浏览器,并在使网站响应的同时导致部分内容呈现.
如果我在IBM WAS上托管了一个提供动态内容的Web应用程序(例如:基于JSF的Web应用程序),那么大多数Web页面都设计为服务器丰富的静态内容,包含大量的CSS和JS文件+动态内容.如何为我的页面设置transfer-encoding'chunked'?或者换句话说:
'Transfer-Encoding: chunked'
以及如何为该页面设置该页面?您的个人经历对我的理解肯定是有价值的.
将Singleton对象重构为集群环境的最佳策略是什么?
我们使用Singleton从Database中缓存一些自定义信息.它主要是只读的,但在某些特定事件发生时会刷新.
现在我们的应用程序需要部署在集群环境中.根据定义,每个JVM都有自己的Singleton实例.因此,当在单个节点上发生刷新事件并刷新其缓存时,缓存可能在JVM之间不同步.
保持缓存同步的最佳方法是什么?
谢谢.
编辑:缓存主要用于向UI提供自动完成列表(性能原因),我们使用Websphere.所以任何与Websphere相关的技巧都欢迎.
我正在使用IBM Websphere Application Server v6和Java 1.4,并且正在尝试将大型CSV文件写入ServletOutputStream
供用户下载.目前文件范围为50-750MB.
较小的文件不会导致太多问题,但是对于较大的文件,它似乎被写入堆中,然后导致OutOfMemory错误并关闭整个服务器.
这些文件只能通过HTTPS提供给经过身份验证的用户,这就是我通过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
{
if(inputStream != null)
inputStream.close();
}
Run Code Online (Sandbox Code Playgroud)
在FileInputStream
似乎没有,如果我写到另一个文件或只是删除完全写入内存使用情况似乎并不成为一个问题而导致问题.
我的想法是resp.getOutputStream().write
存储在内存中,直到数据可以发送到客户端.因此整个文件可能会被读取并存储在resp.getOutputStream()
导致我的内存问题和崩溃的位置!
我已经尝试过缓冲这些流,并尝试使用Channels java.nio
,其中任何一个似乎都没有对我的内存问题产生任何影响.我还在OutputStream
每次迭代循环和循环之后刷新了一次,这没有帮助.
我想使用JConsole来监视我的Websphere应用程序,但我不知道如何启用JMX.