Java Weblogic在JAX-WS客户端中卡住了线程

Java Weblogic在JAX-WS客户端中卡住了线程,java,web-services,weblogic,jax-ws,Java,Web Services,Weblogic,Jax Ws,我的web应用程序前端在自己的专用weblogic服务器上运行。我的Web服务部署在不同的服务器机器上,即weblogic上 我使用Web服务的方式如下: URL url = new URL("http://xxx:7001/corpevent/rightsservice?wsdl"); QName qname = new QName("http://corpevent.service.org/", "rightsservice"); Service service = Service.cre

我的web应用程序前端在自己的专用weblogic服务器上运行。我的Web服务部署在不同的服务器机器上,即weblogic上

我使用Web服务的方式如下:

URL url = new URL("http://xxx:7001/corpevent/rightsservice?wsdl");
QName qname = new QName("http://corpevent.service.org/", "rightsservice");

Service service = Service.create(url, qname);
RightsIssueService ri = service.getPort(org.service.corpevent.RightsIssueService.class);
ri.callMethod();
它工作正常,但有时我会遇到线程问题。我曾试图想办法阻止它发生,但迄今为止我所做的一切都没有奏效

以下是堆栈跟踪:

"[STUCK] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'" Id=138 BLOCKED on org.eclipse.persistence.jaxb.JAXBContext@bbec059 owned by "[STUCK] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'" Id=67

  at org.eclipse.persistence.jaxb.JAXBContext.newContextState(JAXBContext.java:270)

  - blocked on org.eclipse.persistence.jaxb.JAXBContext@bbec059

  at org.eclipse.persistence.jaxb.JAXBContext.refreshMetadata(JAXBContext.java:255)

  at org.eclipse.persistence.jaxb.JAXBContext.jrCheckReload(JAXBContext.java)

  at org.eclipse.persistence.jaxb.JAXBContext.createMarshaller(JAXBContext.java)

  at com.sun.xml.ws.db.toplink.JAXBContextWrapper$1.newInstance(JAXBContextWrapper.java:85)

  at com.sun.xml.ws.db.toplink.JAXBContextWrapper$1.newInstance(JAXBContextWrapper.java:82)

  at com.sun.xml.ws.db.toplink.ObjectPool.allocate(ObjectPool.java:65)

  at com.sun.xml.ws.db.toplink.JAXBBond.marshal(JAXBBond.java:128)

  at com.sun.xml.ws.message.jaxb.JAXBHeader.writeTo(JAXBHeader.java:200)

  at com.sun.xml.ws.message.AbstractMessageImpl.writeToBodyStart(AbstractMessageImpl.java:178)

  at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:191)

  at com.sun.xml.ws.api.message.MessageWrapper.writeTo(MessageWrapper.java:226)

  at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:144)

  at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:242)

  at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:225)

  at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145)

  at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:110)

  at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)

  at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)

  at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)

  at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)

  at com.sun.xml.ws.client.Stub.process(Stub.java:463)

  at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)

  at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)

  at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)

  at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)

  at com.sun.proxy.$Proxy147.queryClientCompanyRightsIssues(Unknown Source)

  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  at java.lang.reflect.Method.invoke(Method.java:497)

  at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:87)

  at com.sun.proxy.$Proxy145.queryClientCompanyRightsIssues(Unknown Source)

  at org.greenpole.services.clientcompany.rightsissue.RightsService.queryClientCompanyRightsIssues(RightsService.java:164)

  at org.greenpole.controller.clientcompany.RightsIssueController.getClientCompanyRightsIssueList(RightsIssueController.java:134)

  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  at java.lang.reflect.Method.invoke(Method.java:497)

  at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)

  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)

  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)

  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)

  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)

  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)

  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)

  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)

  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)

  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)

  at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)

  at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)

  at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)

  at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)

  at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)

  at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)

  at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)

  at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)

  at weblogic.websocket.tyrus.TyrusServletFilter.doFilter(TyrusServletFilter.java:205)

  at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)

  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:85)

  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)

  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

  at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)

  at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)

  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)

  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

  at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)

  at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)

  at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)

  at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)

  at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)

  at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3436)

  at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.__run(WebAppServletContext.java:3402)

  at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java)

  at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

  at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)

  at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)

  at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)

  at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)

  at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)

  at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)

  at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)

  at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)

  at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)

  Number of locked synchronizers = 1

  - java.util.concurrent.locks.ReentrantLock$NonfairSync@706cf33f

我在某个地方读到JAX-WS不是线程安全的。在我的例子中,我的实现是否错误?

问题在于我的前端服务器和中间件服务器(其中包含weblogic服务器)之间的网络连接。我有了一个新的服务器,用虚拟机软件代替了我使用的Hyper-V,一切都井然有序


中间件应用程序安装在RHEL(Red Hat Enterprise Linux)上。

上面的客户端代码是卡住的线程吗?i、 客户端代码是否在Weblogic内部运行?是的,卡住的线程就是上面的客户端代码。客户机在weblogic内部运行,weblogic在尝试使用web服务时偶尔会出现大量线程卡住的问题。当任何事务花费很长时间时,Blogic总是抱怨。客户机试图调用的是您的服务器,这是一种错误行为。我想你已经知道了。如果线程池中有太多线程,Weblogic可能无法为请求提供服务。至于线程安全,我认为一个“Service=Service.create(url,qname);”代表HTTP连接。所以不要分享你的服务。顺便说一句,weblogic将一个线程标记为卡住的默认时间是10分钟(这并不意味着它真的卡住了,只是它运行了10分钟以上)rjdkolb,我们有日志设置,以便无论何时请求到达我们知道的服务器。在这个被卡住线程的实例中,没有请求到达服务器。所以,这不像是有一个请求,而且需要花费太长的时间来处理。请求根本不来。同时,后端服务器仍在运行,web服务仍然可以访问。通常,当我们重新启动客户端应用程序时,它可以正常访问后端服务器,然后过一段时间(随机),就会出现一个卡住的线程。