私はwso2 ESB 4.8でカスタムメディエーターを実装しようとしています。 this articleを参考にしてthe docsにも言いましたが、ESBに自分のmediatorのxml設定を認識させることができませんでした。カスタムメディエーターを展開する際のWSO2 ESBエラー
私は、ドキュメントに記載されたすべての手順を追った仲介者のプロジェクト<ESB_HOME>/ repository/components/lib
にの.jarを移動し、サーバーを再起動しますが、私は展開時に次のエラーを受信し続ける:ここ
ERROR - MediatorFactoryFinder Unknown mediator referenced by configuration element : {http://ws.apache.org/ns/synapse}currencyMediator
は仲介者を次のコード:
package org.wso2.esb.tutorial.custom;
import java.util.Iterator;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.soap.SOAPBody;
import org.apache.synapse.MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
public class CurrencyMedXML extends AbstractMediator {
private String symbol = "$";
public boolean mediate(MessageContext synCtx) {
// get symbol, last elements of SOAP envelope
SOAPBody body = synCtx.getEnvelope().getBody();
OMElement firstElement = body.getFirstElement();
//Iterator it = firstElement.getChildren();
Iterator it = firstElement.getChildrenWithName(new QName("return"));
while (it.hasNext()) {
OMNode node = (OMNode)it.next();
if (node.getType()==OMNode.ELEMENT_NODE) {
OMElement ele=(OMElement)node;
String text = ele.getText();
ele.setText(symbol+text);
}
}
return true;
}
public void setSymbol(String sym){
symbol=sym;
}
public String getSymbol(){
return symbol;
}
}
シリアライザ実装:
package org.wso2.esb.tutorial.custom;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.Mediator;
import org.apache.synapse.config.xml.AbstractMediatorSerializer;
public class CurrencyMedXMLSerializer extends AbstractMediatorSerializer {
public String getMediatorClassName() {
return CurrencyMedXML.class.getName();
}
@Override
protected OMElement serializeSpecificMediator(Mediator m) {
if (!(m instanceof CurrencyMedXML)) {
handleException("Unsupported mediator passed in for serialization : "
+ m.getType());
}
CurrencyMedXML mediator = (CurrencyMedXML) m;
OMElement CurrencyMediatorElement = fac
.createOMElement(CurrencyMedXMLFactory.CURRENCY_MEDIATOR_Q);
saveTracingState(CurrencyMediatorElement, mediator);
OMElement symbolElement = fac.createOMElement(CurrencyMedXMLFactory.SYMBOL_Q, CurrencyMediatorElement);
symbolElement.setText(mediator.getSymbol());
return CurrencyMediatorElement;
}
}
、工場の実装:私はそのカスタムタグの方法を試していない
<outSequence>
<currencyMediator>
<symbol>$</symbol>
</currencyMediator>
<send/>
</outSequence>