gpt4 book ai didi

java - 如何使用 WSO2 ESB 4.7 中的 SOAP 服务 addSequence

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:07 26 4
gpt4 key购买 nike

我正在尝试使用 WSO2 ESB 4.7 中的 SOAP 服务 addSequence我正在使用位于以下位置的 SequenceAdminService.wsdl 文件:

https://ip:9443/services/SequenceAdminService?wsdl

在此 WSDL 中,addSequence 方法的输入参数的类型为 Object。我查看了服务器代码,WSO2 ESB 正在参与 addSequence 服务的 OMElement。

所以我在我的 pom.xml 中添加了这个依赖项:

<dependency>
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
<artifactId>axiom</artifactId>
<version>1.2.11.wso2v2</version>
</dependency>

并像这样修改了我的代码:

String sequenceXml = this.configTemplate.generateAuthentificationSequence(sequenceName, authorization);

OMElement sequenceElement = null;
try {
sequenceElement = AXIOMUtil.stringToOM(sequenceXml);

} catch (XMLStreamException e) {
throw (new TechnicalException(e));
}

try {
this.sequenceAdminStub.addSequence(sequenceElement);
} catch (SequenceAdminServiceSequenceEditorException e1) {
throw (new TechnicalException(e1));
}

但在运行时,我收到此编码错误:

javax.xml.ws.soap.SOAPFaultException: Marshalling Error: class org.apache.axiom.om.impl.llom.OMElementImpl nor any of its super class is known to this context.
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)
at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:157)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:189)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:316)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:323)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:72)
at com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty.serializeBody(SingleReferenceNodeProperty.java:111)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:152)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:189)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:316)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:323)
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:72)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:95)
at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:550)
at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:232)
at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169)
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:110)
at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:461)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:364)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
at com.sun.proxy.$Proxy55.addSequence(Unknown Source)
at com.francetelecom.clara.cloud.iaas.wso2esb.infrastructure.Wso2SequenceAdapterImpl.createHttpAuthentSequence(Wso2SequenceAdapterImpl.java:117)
at com.francetelecom.clara.cloud.iaas.wso2esb.infrastructure.Wso2SequenceAdapterIT.shouldCreateDeleteSequenceAuthent(Wso2SequenceAdapterIT.java:36)

有什么想法吗?谢谢

最佳答案

您可以查看 ESB 代码并了解它如何处理此问题。

save_sequence.jsp包含添加序列时使用的代码。

SequenceAdminClient.java

public void addSequence(SequenceMediator sequence) throws SequenceEditorException {
OMElement sequenceElem = sequence.serialize(null);
try {
sequenceAdminStub.addSequence(sequenceElem);
} catch (Exception e) {
handleException("Error in adding the sequence with the configuration '"
+ sequenceElem + "'", e);
}
}

SequenceMediator.java

public OMElement serialize(OMElement parent) {
OMElement sequence = fac.createOMElement("sequence", synNS);
if (!anonymous) {
if (key != null) {
// Use KeySerializer to serialize Key
ValueSerializer keySerializer = new ValueSerializer();
keySerializer.serializeValue(key, XMLConfigConstants.KEY, sequence);
} else if (name != null) {
sequence.addAttribute(fac.createOMAttribute(
"name", nullNS, name));

if (errorHandler != null) {
sequence.addAttribute(fac.createOMAttribute(
"onError", nullNS, errorHandler));
}
saveTracingState(sequence, this);
serializeChildren(sequence, getList());
}

if (parent != null) {
parent.addChild(sequence);
}
} else {
if (errorHandler != null) {
sequence.addAttribute(fac.createOMAttribute(
"onError", nullNS, errorHandler));
}
saveTracingState(sequence, this);
serializeChildren(sequence, getList());
if (parent != null) {
parent.addChild(sequence);
}
}

if (description != null) {

OMElement descriptionElem = sequence.getFirstChildWithName(new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "description"));

if (descriptionElem != null) {
descriptionElem.setText(description);
} else {
OMElement newDescriptionElem = fac.createOMElement("description", synNS);
newDescriptionElem.setText(description);
sequence.addChild(newDescriptionElem);
}

}

return sequence;
}

所有相关文件位于 https://svn.wso2.org/repos/wso2/carbon/platform/branches/4.1.0/components/sequence-editor/

关于java - 如何使用 WSO2 ESB 4.7 中的 SOAP 服务 addSequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20374802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com