Tag: 应用程序服务器

Wildfly 10.1消耗所有核心

我们最近将我们的银行应用程序从java 1.6升级到1.8,将jboss 4.x升级到wildfly 10.1。 我们观察到java消耗了机器上可用的所有核心(10)。 有人可以告诉是什么原因,通常使用jboss 4.x最大CPU利用率高达4核心。 我是否需要为垃圾收集配置任何东西? 下面是(添加进程消耗高CPU)的结果 ps -eLo pid,lwp,nlwp,ruser,pcpu,stime,etime,args | grep 3630 下面是每个消耗高CPU的LWP的hex 现在我检查了LWP 7914的线程转储 “default task-7”#182 prio = 5 os_prio = 0 tid = 0x00007f5c24033800 nid = 0x1c1a runnable [0x00007f5bb85e5000] java.lang.Thread.State:RUNNABLE at org.xnio.conduits.ConduitStreamSinkChannel.write(ConduitStreamSinkChannel.java:150) at io.undertow.channels.DetachableStreamSinkChannel.write(DetachableStreamSinkChannel.java:240)at io.undertow.server.HttpServerExchange $ WriteDispatchChannel.write(HttpServerExchange.java:2028)at io.undertow.servlet.spec.ServletOutputStreamImpl.writeBufferBlocking(ServletOutputStreamImpl .java:563)在i.undertow.servlet.spec.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:216)的java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)java.io.BufferedOutputStream.write(BufferedOutputStream。 java:95) – 在javax.servlet.http.HttpServlet.service(HttpServlet)的com.eko.app.offlineKyc.servlet.KycPictureServlet.doGet(KycPictureServlet.java:58)上锁定(一个java.io.BufferedOutputStream) .java:687)在javax.servlet.http.HttpServl et.service(HttpServlet.java:790)at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)at io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter(FilterHandler.java:129) at com.eko.framework.CrossScriptingFilter.doFilter(CrossScriptingFilter.java:48)at […]

容器内测试与模拟对象进行集成测试

容器内测试通常与使用模拟对象进行测试相反。 但是,由于模拟对象只是模仿真实对象的行为,因此容器内测试不是在其真实环境中真正测试系统的唯一方法吗? 作为容器内测试和模拟对象的部分替代,Spring提供了TestContext框架,可以很好地初始化Spring,而无需启动实际的应用程序容器(在我的例子中是Web应用程序服务器)。 但是,这是一种有限的方法,因为它只初始化特定于Spring的function,而不支持特定于应用程序服务器的function。 所以你无法测试一切。 此外,由于它与实际Web执行中使用的默认WebApplicationContext不是100%相同,这种方法是不是有点hackyish? 这不好吗? 对于容器内测试,至少有Cactus (过时), Jeeunit (一个非常小的项目)和JBoss Arquillian (仍然是alpha,但看起来很有希望)。 我没有看到任何这些项目被广泛使用,所以容器内测试有什么不好吗? 容器内测试经常提到的主要缺点是执行速度慢。 但是,当在持续集成环境和相对较小的项目中运行时,这应该不是问题。 总结一下:我们应该进行容器内还是容器外测试?为什么? 使用模拟对象或替代初始化机制(如在Spring TestContext中)进行集成测试会不会感觉不舒服? 一个子注释:我最近询问了集成测试的分类 ,这可能是相关的。

Tomcat / jBOSS会话 – 它们通常存储在哪里?

前言:我不是Java开发人员。 我有关于Tomcat / jBOSS和其他Java应用程序服务器的问题。 会话(会话数据)存储在哪里? 在PHP中,会话通常存储在数据库中,这意味着您可以在负载平衡环境中轻松共享会话数据。 在Tomcat和其他应用程序服务器中,默认情况下会话似乎存储在内存中,这不适用于负载平衡环境。 虽然PHP默认情况下会将会话存储在文件中,但需要几行才能将其连接到数据库。 应用程序服务器也是如此吗? 基本上,在记忆中故事会的优点是什么? 这仍然是应用服务器的标准做法吗? 谢谢大家!

Application Server JDBC资源的DataSource或ConnectionPoolDataSource

在应用程序服务器中创建JNDI JDBC连接池时,我总是将类型指定为javax.sql.ConnectionPoolDataSource 。 我从来没有真正给过太多考虑,因为在非汇集时更喜欢汇集连接似乎总是很自然。 但是,在查看一些示例( 特别是Tomcat )时,我注意到它们指定了javax.sql.DataSource 。 此外,似乎有maxIdle和maxWait设置给人的印象是这些连接也是合并的。 无论选择何种类型的数据源,Glassfish都允许使用这些参数。 javax.sql.DataSource是否在应用程序服务器(或servlet容器)中池化? 在javax.sql.DataSource选择javax.sql.ConnectionPoolDataSource有什么优点(如果有的话)(反之亦然)?