为什么我第一次调用 SOAP Web 服务 (JAX-WS) 时响应 Websphere 的时间太长?
Why is taking too long to respond to Websphere the first time I invoke a SOAP Web Service (JAX-WS)?
我正在使用 Websphere 8.5.5,我注意到我第一次调用 JAX-WS Web 服务需要很长时间才能响应。我在 LOG(跟踪级别)中得到它,15 分钟后它起作用了。我有 EclipseLink MOXy 作为 JAXB 提供者
jaxb.properties:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
javax.xml.bind.JAXBException:
Exception Description: Name collision. Two classes have the XML type with uri http://www.w3.org/2001/XMLSchema and name string.
- with linked exception:
[Exception [EclipseLink-50007] (Eclipse Persistence Services - 2.4.2.qualifier): org.eclipse.persistence.exceptions.JAXBException
Exception Description: Name collision. Two classes have the XML type with uri http://www.w3.org/2001/XMLSchema and name string.]
好吧,经过大量研究我发现它似乎是 Websphere 的一个错误,因为它向 JAXB 上下文添加了一些数组 类 例如(byte[], int[], String[]) 问题是,当它添加 String[] 到 类 的列表时,JAXB 上下文 MOXy 无法处理并给出该错误。
好消息是可以通过在 "Generic JVM arguments" 中添加自定义 属性 来解决这个问题,因为 Websphere >= 8.5.5.2
Servers > Server Types > WebSphere application servers > server_name >
Java and Process Management > Process definition > Java Virtual
Machine >Generic JVM arguments
-Dcom.ibm.websphere.webservices.jaxwsOptimizeLevelOne=true
在下面的资源中,它并没有说它会那样做,但是在检查 EclipseLink 中的 JAXBContext 创建之后,您可以看到它不再发送那些数组 类 从而解决了问题。
更多相关信息:
http://www-01.ibm.com/support/docview.wss?uid=swg1PI14203
记录跟踪以检测在 Websphere 上创建 JAXBContext 需要多少时间可以激活指定此日志级别:
com.ibm.ws.websvcs.JAXBContextTrace=all
[7/7/16 16:34:28:908 CDT] 00000089 JAXBContextTr 3
org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext
new JAXBContext constructed, elapsed time msec: 1035
我正在使用 Websphere 8.5.5,我注意到我第一次调用 JAX-WS Web 服务需要很长时间才能响应。我在 LOG(跟踪级别)中得到它,15 分钟后它起作用了。我有 EclipseLink MOXy 作为 JAXB 提供者
jaxb.properties:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
javax.xml.bind.JAXBException:
Exception Description: Name collision. Two classes have the XML type with uri http://www.w3.org/2001/XMLSchema and name string.
- with linked exception:
[Exception [EclipseLink-50007] (Eclipse Persistence Services - 2.4.2.qualifier): org.eclipse.persistence.exceptions.JAXBException
Exception Description: Name collision. Two classes have the XML type with uri http://www.w3.org/2001/XMLSchema and name string.]
好吧,经过大量研究我发现它似乎是 Websphere 的一个错误,因为它向 JAXB 上下文添加了一些数组 类 例如(byte[], int[], String[]) 问题是,当它添加 String[] 到 类 的列表时,JAXB 上下文 MOXy 无法处理并给出该错误。
好消息是可以通过在 "Generic JVM arguments" 中添加自定义 属性 来解决这个问题,因为 Websphere >= 8.5.5.2
Servers > Server Types > WebSphere application servers > server_name > Java and Process Management > Process definition > Java Virtual Machine >Generic JVM arguments
-Dcom.ibm.websphere.webservices.jaxwsOptimizeLevelOne=true
在下面的资源中,它并没有说它会那样做,但是在检查 EclipseLink 中的 JAXBContext 创建之后,您可以看到它不再发送那些数组 类 从而解决了问题。
更多相关信息:
http://www-01.ibm.com/support/docview.wss?uid=swg1PI14203
记录跟踪以检测在 Websphere 上创建 JAXBContext 需要多少时间可以激活指定此日志级别:
com.ibm.ws.websvcs.JAXBContextTrace=all
[7/7/16 16:34:28:908 CDT] 00000089 JAXBContextTr 3 org.apache.axis2.jaxws.message.databinding.JAXBUtils getJAXBContext new JAXBContext constructed, elapsed time msec: 1035