7 Ekim 2014 Salı

Netbeans Glassfish Start problemleri -J-Duser.language=en -J-Duser.country=US locale ayarları

Bir önceki yazıda glassfis port occupied sorunu incelemiştik.Port occupied hatası alınmasada bazen Glassfish server loglara hata sebebi belirtmeden ayağa kalkmamakta ve çalışmamaktadır.Detayları ile bilmeme karşın Bilgisayarın locale settings leri ile ilgili olduğunu düşündüğüm bu hatanın çözümü için aşağıdaki yolun izlenmesi gerekmektedir-Her GF çalışmaması problemi bu sorun ile ilgili değildir bunu da belirteyim-

Öncelikle netbeansın kurulum lokasyonunu buluyoruz.Benimm bilgisayarımda ilgili lokasyon 




C:\Program Files\NetBeans 7.4\ 

 
şeklindedir .Belirtilen lokasyonun içindeki etc dosyasının içine giriyoruz 





C:\Program Files\NetBeans 7.4\etc


Burada yer alan 





netbeans.conf


dosyasını editlemek üzere açıp 





netbeans_default_options="-J-client -J-Xss2m -J-Xms32m


ile başlayan satırı buluyoruz.Bu satırın -genelde sonuna - şu satırları ekliyoruz 

-J-Duser.language=en -J-Duser.country=US

diğer bilgiler gibi boşluk ve sona koymuş isek tırnak ile bitirmeye dikkat etmeliyiz.

Dosyayı kaydederken permission hatası alırsanız dosyayı masaüstünüze kopyalayıp editledikten sonra 





C:\Program Files\NetBeans 7.4\etc

pathindeki dosyanın üzerine kayıt edebilirsiniz.


Netbeans Glassfish problemleri - Port is occupied ve start problemleri

Yukarıdaki hata daha önce kurulmuş herhangi bir uygulamanın 8080 port unu kullanmasından kaynaklanmaktadır.Basit çözüm olarak glassfish domain.xml dosyasından port configurationlarının değiştirilmesi gerekmektedir

sizeAitGlassfishPathi\GF_4.0\domain1\config dosyasının altındaki domain.xml dosyasını bulup editlemek üzere açınız.Benim glassfishim ve oluşturduğum domainin pathi aşağıdaki resimde yer almaktadır.

Kendi GF nizin domain.xml dosyasını bulmak için services>servers>kullanılan GF>Sağtık>properties  opsiyonuna tıklayın. 



domain\config dosyasını açtıktan sonra editlemek üzere açmış olduğunuz domain.xml dosyasında 8080 portunu aratın yada aşağıdaki resimdeki olanxml elementlerini bulun.Benim yaptığım gibi kullanılmasının ihtimal dışı olacağını düşündüğünüz port numaralarını sarı ile boyanmış kısımlara yazın-Diğer kısımlara dokunmayın.Netbeans i ve Glassfish i  kapatıp açın .Farklı bir sorun yoksa port - occupied hatası yok olacaktır 





  

6 Ekim 2014 Pazartesi

Simple XML

Java da xml marshall ve unmarshall işlemleri için kullanılabilecek farklı implementasyonlar mevcut bunlardan en çok tercih edileni artık Java 6 dan sonra standart javada da yer alan JAX-B dir. Toplam boyutun önemli olduğu uygulamalarda toplamda 9 MB ulaşan boyutu ile bir android uygulaması için normal görülebilecek boyut hakkının 50% sini gasp etmektedir bu da bizi farklı bir arayışa yönlendirmektedir.Kullandıkça aslında JAX-B den daha mı iyi diye düşünmeme sebep olan Simple XML böyle durumlarda kapladığı minumum alan ile oldukça uygun bir çözüm gibi gözükmektedir.

Simple xml i aşağıdaki linkten indirebilir örnekleri inceleyebilirsiniz: 

http://simple.sourceforge.net/download.php
Jax-B ve simple xml karşılaştırması için aşağıdaki yazıyı okuyabilirsiniz : 
http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-simple.html

 Haftanın içinde day bilgisini tutmak için yapı simple xml de aşağıdaki gibi kurulabilir
@Root
public class Day {
    
    @Attribute
    private String value;

    public Day(){

    }

    public Day( String value) {
        this.value = value;
    }
    public String getValue() {
        return value;
    }

    public void setValue(String value)  {
        this.value = value;
    }

  

}


Ve day classını içinde bulunduran Week classı
@Root(name = "week")
public class Week {
    @Attribute(name="value")
    private String value;
    @ElementList(inline = true)
    private List dayList;
    public Week(){

    }
    public Week(String value, List dayList) {
        this.value = value;
        this.dayList = dayList;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public List getDayList() {
        return dayList;
    }

    public void setDayList(List dayList) {
        this.dayList = dayList;
    }
    
    
    
}


Serialize etme işlemi Jax-B deki marshall işlemine karşılık gelir ve aşağıdaki gibi yapılır
public static void main(String[] args) {

        Day day=new Day("Pazartesi");
        List dayList=new ArrayList();
        dayList.add(day);
        Week week =new Week("1",dayList);
        File file= new File("C:\\Abdurrahman\\output.xml");
        Serializer serializer=new Persister();
        serializer.write(week,outputFile);//Yazmak icin
        Week readWeek=serializer.read(Week.class,file);//Okumak icin


}

Sonuç olarak aşağıdaki XML elde edilir




<week val="1"> <day value="Pazartesi"> <day value="Sali"> </day></day></week> xml deki attrribute kısımları bozuk çıkmış olabilir  value olması gerekmektedir aksi değerleri  dikkate almayınız.


org.simpleframework.xml.core.PersistenceException: Constructor not matched for

şeklinde bir hata alırsanız Tüm Pojo larınıza yada entity lerinize boş constructor ekleyiniz .