import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.transaction.Transaction;
import com.sap.aii.adapter.xi.ms.XIMessage;
import com.sap.aii.af.app.modules.orch.MessagingBeanBase;
import com.sap.aii.af.lib.mp.module.ModuleContext;
import com.sap.aii.af.lib.mp.module.ModuleData;
import com.sap.aii.af.lib.mp.module.ModuleException;
import com.sap.aii.af.service.cpa.CPAObjectType;
import com.sap.aii.af.service.cpa.Channel;
import com.sap.aii.af.service.cpa.LookupManager;
import com.sap.engine.interfaces.messaging.api.DeliverySemantics;
import com.sap.engine.interfaces.messaging.api.Message;
import com.sap.engine.interfaces.messaging.api.MessageClass;
import com.sap.engine.interfaces.messaging.api.XMLPayload;
public class SyncAsyncResponseBean extends MessagingBeanBase implements SessionBean {
private static final long serialVersionUID = -5736277688013260902L;
public ModuleData process(ModuleContext moduleContext, ModuleData moduleData) throws ModuleException {
init();
try {
Channel channel = LookupManager.getInstance().getCPAObject(CPAObjectType.CHANNEL, moduleContext.getChannelID());
Message reqMsg = (Message) moduleData.getPrincipalData();
reqMsg.setDeliverySemantics(DeliverySemantics.ExactlyOnce);
if ((this.txmanager != null) && (this.txmanager.getStatus() == 6)) {
Transaction tx = (Transaction) moduleData.getSupplementalData("transaction");
if (tx != null) {
this.txmanager.resume(tx);
}
}
retrieveConnection(moduleContext, channel).send(reqMsg);
Message respMsg = this.afMessageFactory.createMessage(reqMsg.getToParty(), reqMsg.getFromParty(), reqMsg
.getToService(), reqMsg.getFromService(), reqMsg.getAction());
XMLPayload respPayload = respMsg.createXMLPayload();
respPayload.setContent(new CreateWebserviceResponse().transform(reqMsg));
respMsg.setDocument(respPayload);
((XIMessage) respMsg).setMessageClass(MessageClass.APPLICATION_RESPONSE);
respMsg.setDeliverySemantics(DeliverySemantics.BestEffort);
respMsg.setRefToMessageId(reqMsg.getMessageId());
moduleData.setPrincipalData(respMsg);
return moduleData;
} catch (Exception e) {
throw new ModuleException(e.getMessage(), e);
}
}
public void ejbActivate() throws EJBException, RemoteException {
}
public void ejbPassivate() throws EJBException, RemoteException {
}
public void ejbRemove() throws EJBException, RemoteException {
}
public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
}
}
import java.io.ByteArrayOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.sap.aii.af.lib.mp.module.ModuleException;
import com.sap.engine.interfaces.messaging.api.Message;
public class CreateWebserviceResponse {
public byte[] transform(Message msg) throws ModuleException {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
factory.setIgnoringElementContentWhitespace(true);
Document outputDoc = builder.newDocument();
Element outMsgType = outputDoc.createElement("ns0:WebserviceResponse");
outMsgType.setAttribute("xmlns:ns0", "http://mycompany.org");
outputDoc.appendChild(outMsgType);
Element messageIdElement = outputDoc.createElement("MessageId");
messageIdElement.setTextContent(msg.getMessageId());
outMsgType.appendChild(messageIdElement);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource(outputDoc);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StreamResult result = new StreamResult(baos);
transformer.transform(source, result);
return baos.toByteArray();
} catch (Exception e) {
throw new ModuleException(e.getMessage(), e);
}
}
}
<reference
reference-type="hard">
<reference-target
provider-name="sap.com"
target-type="service">com.sap.aii.adapter.xi.svc</reference-target>
</reference>
<reference
reference-type="hard">
<reference-target
provider-name="sap.com"
target-type="application">com.sap.aii.af.app</reference-target>
</reference>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
5 | |
5 | |
5 | |
5 | |
4 | |
4 | |
4 | |
3 | |
3 |