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

Oracle Applications Developer at Partnera
2005 yılında Dokuz Eylül Üniversitesi Endüstri Mühendisliğinden Mezun
Oldu, 2011 Yılında Ahmet Yesevi Üniversitesi Bilgisayar Mühendisliğinde
Yüksek Lisansını Tamamlandı,2012 Yılında Doğuş Üniversitesinde Bilgisayar
Mühendisliği Doktora Eğitimine Başladı.10 yılı aşkın bir zamandır Oracle
Ürünleri Uygulama Yazılım Uzmanı Olarak profesyonel kariyerine devam
etmektedir. İlgi alanları Middleware, CI/CD,
Oracle Database , PL/SQL , Java , Makine Öğrenmesi ve Veri Madenciliği alanlarındadır.
2 versiyon Oracle Database ' (10g, 11g) inde OCA(Oracle Certificate Associate) ve
PL/SQL Certificated Professional ünvanları bulunmaktadır.
Mail: mustafakorkmz@gmail.com
Mustafa Korkmaz


Yorum yapın

*