Otomatik olarak web servis tanımlamak ise java projemiz üzerinde Definition klasör'ü içersinde bulunan "webServices.lws" dosyasını çift tıklayıp açtığımızda gelen ekranda web servis class'ımızı tanımlıyoruz, aşağıda ki resimde ki gibi. Bu şekilde web servis için yaptığımız değişiklikler her deploye işleminde otomatik olarak değişmiş olacak. Önerilen yöntemdir.

Not: Web servisler için tanımlanan classlar'da yaptığımız değişiklikler deploye işlemi yapılmadan önce server açılıp kapatılmalıdır.

Uyarı:

Manual ve Otomatik tanımlamalar yapıldıktan sonra yaptığınız işlmelerin veya değişikliklerin müşterilerin bilgisayrlarında çalışmadıklarını gördüğümüzde yapmamız gereken yol adımları sırasıyla sunlardır.

  • İlk olarak aar dosyasını projemizden kaldırıp boş bir şekilde deploye etmek
  • Sonrasında Logo >WebContent>services>(dosyamızın ismi).aar bulunan aar uzantılı dosyamızı siliyoruz.
  • Sonrasında serveri kapatıp, clean işlemlerini gerçekleştirip, tekrar aar uzantılı dosyamızı deploye ederiz.


Kaynak Kod:

Custom Web Service in Java.zip

 

Uyarlama projesi içerisinde bir web service yazmak için ilk işlem olarak bir sınıf oluşturulur ve gerçekleştirlmek istenilen işlemler bu sınıf içerisinde kodlanır. Aşağıdaki örnek sınıf içerisinde malzeme browser’ına ait MMQOItemBrowser sorgusu çalıştırılarak sonuç istemciye döndürülmüştür.


package com.acme.customization;
 
public class CustomWebService
{
 
public String[] getFirstNItems(int firm, int period, String language, int rowCount)
{
try
{
       IServerContext context = WebServiceHelper.getContext(firm, period, language);
       IServerQueryFactory factory = context.getServerQueryFactory();
       QueryParams params = new QueryParams();
       QueryBusinessObjects items = new QueryBusinessObjects();
       factory.first("MMQOItemBrowser", params, items, rowCount, true);
       String[] results = new String[rowCount];
       if(items != null && items.size() > 0)
       {
              for(int i = 0; i < items.size(); i++)
             {
                    QueryBusinessObject item = (QueryBusinessObject) items.get(i)
                    String code = QueryUtil.getStringProp(item, "Code");
                    String name = QueryUtil.getStringProp(item, "Name");
                    String searchText = QueryUtil.getStringProp(item, "SearchText");
                    results[i] = "Code: " + code + " Name: " + name + " Search Text: " + searchText;
             }
       }
       return results;
}
catch (Exception e)
{
       e.printStackTrace();
}
return null;
}
}


Bu adım tamamlandıktan sonra uyarlama projesi derlenir. Uyarlama projesinin bulunduğu dizinde, ..workspace/UyarlamaProjeniz/bin içerisinden web service olarak yazılmış olan sınıf (CustomWebService) ve bu sınıf içerisinde nesneleri oluşturulan ya da static metodlarına erişilen (ProjectUtil) uyarlama projesi içerisinde bulunan ve kullanılmış olan sınıfların .class uzantıları alınır. Tüm bu class’lar paket tanımındaki gibi (CustomWebService sınıfı için ../com/acme/customization) ilgili klasörler içerisine yerleştirilir. Daha sonra bu klasörlerde .aar uzantılı dosyası içerine yerleştirilir. .aar uzantılı bu dosyanın yapısı:

  • META-INF
  • services.xml
  • MANIFEST.MF

Şekildedir. Yukarıdaki adımlarda .class uzantılı dosyaların yerleştirlmesi ile elde edilen diğer klasörlerde META-INF ile aynı dizinde olacak şekilde bu dosya içerisine yerleştirilir.


Bu işlemden sonra services.xml dosyasının içeriği aşağıdaki gibi değiştirilir.


<service name="CustomWebService">
      <description>Description ...</description>
      <parameter name="ServiceClass">com.acme.customization.CustomWebService</parameter>
     
      <parameter name="InflowSecurity">
            <action>
                  <items>UsernameToken</items>
                  <passwordCallbackClass>com.lbs.ws.LbsUserPasswordCallback</passwordCallbackClass>
            </action>
      </parameter>
 </service>



Bu xml’de service etiketinin name özelliğine web servise verilmek istenen isim yazılır. Parameter etiketinin name özelliğine ise yazlımış olan sınıfın paket bilgisi yazılır ve diğer kısımlar olduğu gibi bırakılır. Tüm bu işlemler tamamlandıktan sonra .aar uzantılı dosyanızı adı services.xml içerisinde service etiketi ile belirlenmiş servis ismi ile aynı olacak şekilde isimlendirilmelidir.


.aar dosyası yeniden isimlendirildikten sonra uyarlama projesini altında UyarlamaProjesi/WebContentExtensionsWEB-INF/services altına yerleştirilir. Bu işlem yapıldıktan sonra proje deploy edilir. Web servisin oluşup oluşmadığını kontrol etmek için herhangi bir internet tarayıcısında aşağıdaki link çalıştırılır.


http://localhost:8080/logo/services/CustomWebService?wsdl

Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım