Ağu
13
2015

Weblogic Sunucusu Web Servisi Handler Kullanımı

Merhaba,

Bu yazımda weblogic sunucusunda handler kullanımının nasıl yapılacağını bir örnek ile anlatmaya çalışacağım.

handler-chain.xml isimli handler classınını gösteren xml dosyası yaratılır.

 
<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
  <handler-chain>
    <handler>
      <handler-name>Handler1</handler-name>
      <handler-class>handler.Handler1</handler-class>
    </handler>
  </handler-chain>
</handler-chains>

yaratılan xml dosyası web servisi class ı ile aynı lokasyonda durması için projede aynı paket içerisine konur veya oluşturulur.

handler

örnekteki handler-chain.xml inin işaret ettiği handler paketi içerisindeki handler1.java classının örneği aşağıdaki gibidir.

 
 
PACKAGE handler;
 
import JAVA.io.ByteArrayOutputStream;
import JAVA.util.SET;
import JAVA.util.Collections;
import JAVA.util.logging.LEVEL;
import JAVA.util.logging.Logger;
import javax.xml.namespace.QName;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import javax.xml.soap.SOAPMessage;
import org.slf4j.LoggerFactory;
 
 
PUBLIC class Handler1 implements SOAPHandler<SOAPMessageContext> {
 
    /**
     * logger
     */
    PRIVATE static final org.slf4j.Logger _LOG = LoggerFactory.getLogger(Handler1.class);
 
    PUBLIC Set<QName> getHeaders() {
        RETURN Collections.emptySet();
    }
 
    PUBLIC BOOLEAN handleMessage(SOAPMessageContext messageContext) {
 
        BOOLEAN outboundProperty = (BOOLEAN) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
 
        SOAPMessage soapMessage = messageContext.getMessage();
 
        IF (outboundProperty.booleanValue()) { // gönderilen cevap .
            try {
               _LOG.info((String)messageContext.get("UUID") + " - Response Value => " + toString(soapMessage));
            } catch (EXCEPTION ex) {
                _LOG.error("During Preparing SoapResponse got ERROR !",ex);
            }
        } ELSE {  // gelen talep
            try {
                messageContext.put("SoapRequest", toString(soapMessage));
//                _LOG.info("Soap Message : " + toString(soapMessage));
                messageContext.setScope("SoapRequest", MessageContext.Scope.APPLICATION);//burdaki SET scope olmadan Params classı içerisinden çağırılamıyor !
            } catch (EXCEPTION ex) {
                _LOG.error("During Conversion SoapMessage to String Process got ERROR", ex);
            }
 
        }
 
        RETURN TRUE;
    }
 
    PUBLIC BOOLEAN handleFault(SOAPMessageContext messageContext) {
        RETURN TRUE;
    }
 
    PUBLIC void CLOSE(MessageContext messageContext) {
 
    }
 
    PUBLIC static String toString(SOAPMessage soapMsg) throws EXCEPTION {
 
        ByteArrayOutputStream OUT = NEW ByteArrayOutputStream();
        soapMsg.writeTo(OUT);
        String soapMsgStr = NEW String(OUT.toByteArray());
        RETURN soapMsgStr;
    }
}
Mustafa Korkmaz


Yorum yapın

*