栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

以jar运行时的spring-boot-starter-ws性能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

以jar运行时的spring-boot-starter-ws性能

我对此进行了测试,看来该应用程序在以下两个代码路径中花费了大量时间:

at org.springframework.boot.loader.LaunchedURLClassLoader$1.hasMoreElements(LaunchedURLClassLoader.java:110)at sun.misc.CompoundEnumeration.next(CompoundEnumeration.java:45)at sun.misc.CompoundEnumeration.hasMoreElements(CompoundEnumeration.java:54)at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:354)at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)at javax.xml.transform.FactoryFinder$1.run(FactoryFinder.java:327)at java.security.AccessController.doPrivileged(Native Method)at javax.xml.transform.FactoryFinder.findServiceProvider(FactoryFinder.java:323)at javax.xml.transform.FactoryFinder.find(FactoryFinder.java:299)at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:106)at com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.<init>(EfficientStreamingTransformer.java:68)at com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.newTransformer(EfficientStreamingTransformer.java:420)at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:106)at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:189)at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:60)at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:92)at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:87)at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:61)at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:293)at org.springframework.web.servlet.frameworkServlet.processRequest(frameworkServlet.java:967)at org.springframework.web.servlet.frameworkServlet.doPost(frameworkServlet.java:869)

at org.springframework.boot.loader.LaunchedURLClassLoader$1.hasMoreElements(LaunchedURLClassLoader.java:110)at sun.misc.CompoundEnumeration.next(CompoundEnumeration.java:45)at sun.misc.CompoundEnumeration.hasMoreElements(CompoundEnumeration.java:54)at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:354)at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)at javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:293)at java.security.AccessController.doPrivileged(Native Method)at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:289)at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:267)at javax.xml.parsers.documentBuilderFactory.newInstance(documentBuilderFactory.java:120)at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.<init>(SAX2DOM.java:74)at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:199)at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:436)at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:342)at com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:399)at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:108)at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:189)at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:60)at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:92)at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:87)at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:61)at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:293)at org.springframework.web.servlet.frameworkServlet.processRequest(frameworkServlet.java:967)at org.springframework.web.servlet.frameworkServlet.doPost(frameworkServlet.java:869)

有趣的行是

at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:106)

at javax.xml.parsers.documentBuilderFactory.newInstance(documentBuilderFactory.java:120)

这意味着对于每个请求,JRE中的SAAJ实现都会请求一个new

TransformerFactory
和一个new
documentBuilderFactory
。这些工厂是使用JDK
1.3服务提供者发现机制定位的,该机制涉及搜索下列资源
meta-INF/services
。该搜索的性能对于从中查找这些资源的类加载器的特性非常敏感。这就是为什么您看到
mvn spring-boot:run
与使用可执行JAR 有所不同的原因。特别地,可执行JAR包含嵌入式JAR,从这些嵌入式JAR查找资源非常昂贵。对于
mvn spring-boot:run
这种情况并非如此,这可以解释为什么它更快。

由于这最终是SAAJ实现的问题,因此一种解决方案是改用Apache
Axiom。要使用Spring
Guide中的示例应用程序执行此操作,只需将以下代码添加到

WebServiceConfig

    @Bean    public SoapMessageFactory messageFactory() {        return new AxiomSoapMessageFactory();    }

您还需要添加以下依赖项:

    <dependency>        <groupId>org.apache.ws.commons.axiom</groupId>        <artifactId>axiom-impl</artifactId>        <version>1.2.15</version>    </dependency>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/635702.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号