SSH Key Pair Oluşturmak

Güvenlik amaçlı bağlandığım yerlere çoğunlukla “username”/”password” kullanmaktansa SSH Key Pair oluşturarak “Public Key”i paylaşıp bağlanmayı tercih ediyorum.

Bu yazıda da Mac OS işletim sistemi için nasıl anahtar çifti oluşturulur detaylı bir şekilde anlatmaya çalışacağım.

SSH Key Pair Nedir? (Güvenli Kabuk Anahtar Çifti)

Secure Shell (Güvenli Kabuk), güvensiz bir ağ üzerinde güvenli haberleşmeye olanak sağlayan bir kriptografik ağ protokolüdür.

Amacım şu an private-public key pair (özel-genel anahtar çifti) oluşturmak olduğu için “asimetrik şifreleme” ile RSA anahtar çifti üreteceğim. Aşağıda ssh-keygen aracının özelliklerini bulabilirsiniz.

  1. Terminal üzerindeki aşağıdaki komutu çalıştıracağım. RSA anahtar çifti oluşturmama yardımcı olacak.
    ssh-keygen -t rsa
  2. Hangi dosyaya kaydetmek istediğimizi soracak, istediğiniz ismi verebilirsiniz.
  3. Bu adımdam sonra isterseniz bu anahtarları kullanmak için şifre koyabilirsiniz.
  4. Çıktı aşağıdaki gibi olacaktır. Sizin bir private bir de public olmak üzere iki anahtar oluşturuldu. Private olanı kimse ile paylaşmamanız lazım.
  5. Public olanının (sonu .pub ile bitiyor) içinden anahtarı alıp artık paylaşabilirsiniz.

Kolay gelsin.

Application Servers kategorisine gönderildi | , , ile etiketlendi | Yorum yapın

Java 11-12-13 ve …

Merhabalar, Java 11 ile beraber Java kullanan herkesin hayatında önemli değişiklikler olacak. Bu yazımda onlardan bahsedeceğim.

JDK (Java Development Kit) artık her 6 ayda bir güncellenecek, bunlar da yıl içinde Mart ve Eylül aylarına denk geliyor. LTS (Long Term Support) dediğimiz “Uzun Dönem Destek” paketleri de 3 yılda bir çıkacak.

  • 2018 Eylül – Java 11
  • 2021 Eylül – Java 17
  • 2024 Eylül – Java 23
  • … gibi

Ve tabi ki ücretini ödeyen 3 seneden sonra da desteğini alabilir 🙂

Lisanslama – Oracle JDK & Open JDK

Java 11 ile artık karşımızda Oracle JDK ve Open JDK kavramları var. Bundan sonra

Oracle JDK – Oracle Binary Code License Aggrement

Open JDK – GPL2

ile lisansları ile hayatımızda yer alacak. GPL2 tamamen açık kaynak ve ücretsiz. Oracle Binary Code Lisansı ise geliştirme yaparken yine ücretsiz kullanılabilecek ama üretim (production) ortamlarına ücretli olacak.

Modası Geçen ve Kaldırılanlar

Enterprise API’lerden aşağıdakiler JDK içerisinden çıkarıldı.

  • JAXB – xml binding
  • JAX-WS – xml web services and endpoint technology
  • CORBA – distributed object technology
  • JTA – java transaction api
  • JavaBeans Activation

Detayına şu adresten ulaşabilirsiniz; https://openjdk.java.net/jeps/320

Ayrıca Thread sınıfından destroy() ve stop(Throwable obj) metodları çıkarıldı.

JDK 10 – Thread
JDK 11 – Thread

JavaFX jdk içerisinden çıkarılarak ayrı bir kütüphane haline getirildi, adı da OpenJFX oldu.

Dil ve Kütüphane Yenilikleri

JDK 9 ve 10’da deneysel olarak bulunan HTTP isteği gönderip yanıtını almak için kullanılabilen HttpClient sınıfı artık canlıda. HTTP2 desteği sunduğundan dolayı çoğu yeni proje için Java 11’e geçiş sebebi 🙂 API’yi tanımak için aşağıya bağlantılarını ekledim.

HttpClient API
HttpRequest API
HttpResponse API

 

String sınıfına yeni kullanışlı metodlar eklendi.

repeat() – herhangi bir string i tekrarlamak için
isBlank() – string in boş olup olmadığına bakar
strip() – string’in önü ve arkasındaki boşluk karakterlerini trim() metodundan farklı olarak unicode karakterleri ile temizler
lines() – string in içindeki satırları “\r\n” yani line feed ve carriage return karakterleri stream olarak almamızı sağlar

Ayrıca Files sınıfına aşağıdaki yeni metodlar gelmiş;
Unicode 10 desteği de yine JDK 11 ile geliyor.

Ben burada sadece en çok kullanabileceklerimi yazdım. Tam listeyi yazının en altına ekliyorum.

Performans ve Güvenlik İyileştirmeleri

G1 Garbage Collector ile Java 11, Java 8’e göre %60 daha iyi performans sergiliyor. Bu da yazdığımız kodda herhangi bir değişiklik yapmadan Java 11’e geçirsek bile daha iyi bir performans alabileceğimizin göstergesi.

Ayrıca Epsilon GC ve Z GC adında iki yeni GC eklendi. İkisi de henüz deneysel.

Epsilon Garbage Collector, performans ölçüm amaçlı kullanılabilir, aşağıdaki parametrelerle açılabiliyor.
XX:+UnlockExperimentalVMOptions
XX:+UseEpsilonGC

Z Garbage Collector, multi-terabytes heap e çıkmayı sağlıyor. Sadece 64 bit Linux makinelerde çalışıyor.
XX:+UnlockExperimentalVMOptions
XX:+UseZGC

Güvenlik konusuna gelirsek, TLS 1.3 desteği sağlanmış ve eski güvenliğini kaybetmiş kriptografik algoritmalar çıkarılmış ve yeni daha güvenli algoritmalar eklenmiş. Handshake sırasındaki ilk mesaj hariç hepsi şifrelenmiş. Detaylarına aşağıdaki linkten erişilebilir.
https://openjdk.java.net/jeps/332

Son olarak Oracle’ın açıkladığı Java 11 değişiklikler listesi bağlantıdadır.

Java kategorisine gönderildi | , , , , , ile etiketlendi | Yorum yapın

CentOS 7 Üzerine MySQL Kurmak

CentOS package manager olarak yum kullanıyor. O sebeple önce bunu güncellememiz lazım. Aşağıdaki komutla yapabiliriz.
[shell]sudo yum update[/shell]
Güncelleme bittikten sonra indireceğimiz mysql server versiyonunu belirlememiz lazım. Mysql download sayfasından (http://dev.mysql.com/downloads/repo/yum/) versiyonumuzu seçelim.

Ben versiyon olarak bu örnekte aşağıdaki versiyonu seçtim.
https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

Şimdi sırasıyla bu versiyonu indirelim.
[shell]sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm[/shell]

İndirme işlemi bitince kurulumu başlatalım.
[shell]sudo yum install mysql-community-server[/shell]

Kurulum da bitince MySQL Community Server’ı başlatabiliriz.
[shell]sudo service mysqld start[/shell]

Sunucunun durumuna aşağıdaki komut ile bakabiliriz.
[shell]sudo service mysqld status[/shell]

Active(running) şeklinde görebildiysek başarılıyız.

Şimdi aklımızda sorular olması lazım 🙂 Kurdum ama şifrem ne, hangi porttan erişebilirim gibi…
Öncelikle şifremizi belirleyelim. Kurulum aşamasında bize rastgele bir şifre verildi, onu önce bi alalım.
[shell]sudo grep ‘temporary password’ /var/log/mysqld.log[/shell]

Süper artık random password elimizde. O zaman değiştirelim, bunun için MySQL Server’a bağlanmamız lazım.
[shell]mysql -uroot -p[/shell]

MySQL konsoluna düşmemiz lazım. “mysql>” şeklinde görebiliriz. Şifreyi değiştirelim.
[shell]ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘YeniSifrem123!’;[/shell]

Portu da kontrol edip yazımızı bitirelim.
[shell]select @@port;[/shell]

Bu arada mysql konsolundan çıkmak için “exit;” yazıp entera basın, kalmayın orada 🙂

Database Management Systems, MySQL kategorisine gönderildi | Yorum yapın

Oracle’da Kullanıcı Açmak ve Yetki Vermek

Merhaba, Oracle DB üzerinde kullanıcı açmak için gerekli komutlar aşağıdaki gibi olabilir. Bu arada yetkili bir kullanıcı ile bağlandığımızı farz ediyorum. Kullanıcı adını SUKRU olarak belirledim.

Kullanıcı tanımlamak için
[sql]CREATE USER SUKRU IDENTIFIED BY SUKRU[/sql]

Bağlanma hakkı vermek için
[sql]GRANT CREATE SESSION TO SUKRU[/sql]

Tablo oluşturma hakkı vermek için
[sql]GRANT CREATE TABLE TO SUKRU[/sql]

Sequence oluşturma hakkı vermek için
[sql]GRANT CREATE SEQUENCE TO SUKRU[/sql]

Tablespace alanını kullanabilmek için
[sql]GRANT UNLIMITED TABLESPACE TO SUKRU[/sql]

Güncel sürüm Oracle’da SELECT, INSERT, UPDATE, DELETE için yetki gerekmiyor ama gerekirse
[sql]GRANT
SELECT,
INSERT,
UPDATE,
DELETE
ON
schema.table
TO
SUKRU
[/sql]

Oracle kategorisine gönderildi | , , , , ile etiketlendi | Yorum yapın

Spring Security + PrimeFaces Yönlendirme Problemi Çözümü

Spring Security, Java EE dünyasında kabul görmüş ve java uygulamaları için -bence- güvenlik için bulunmaz bir nimet. Ayrıntılı bilgiye sitesinden ulaşabilirsiniz.
PrimeFaces da JSF dünyasında kabul gören en başarılı bileşen kütüphanesi, yine bu adresten detaylı bilgiye ulaşabilirsiniz.

JSF 2.2 + Spring 4 + Hibernate 4 + PrimeFaces 5 şeklinde altyapısını kurguladığım projemde fark ettim ki başarılı bir giriş (login) işlemi sonrası sayfa gitmesi gereken URL’e gitmiyor. Spring Security loglarını incelediğimde ise herhangi bir problem olmadan “sendRedirect” ile konfigürasyondaki belirttiğim URL’e gönderiyor. Her şeyin bu kadar mükemmel olduğu yerde nasıl olur da bu çalışmaz diye kafayı sıyırdım tabi ki 🙂

Spring Security logu aşağıdaki gibi. /login sayfasından istediğim gibi /pages/home sayfasına yönlendirmiş.

[shell][DEBUG] ..access.intercept.FilterSecurityInterceptor – Authorization successful
[DEBUG] ..security.web.FilterChainProxy – /pages/home.xhtml reached end of additional filter chain; proceeding with original chain
[DEBUG] ..web.access.ExceptionTranslationFilter – Chain processed normally
[DEBUG] ..web.context.SecurityContextPersistenceFilter – SecurityContextHolder now cleared, as request processing completed[/shell]

Başladım daha detaylı incelemeye, önce tarayıcı üzerinde gelen-giden akışı izledim.

İstek (Request):
[text]javax.faces.partial.ajax:true
javax.faces.source:loginButton
javax.faces.partial.execute:loginForm
javax.faces.partial.render:loginForm
loginButton:loginButton
loginForm:loginForm
username:test
password:123456
_csrf:49756ca7-38fd-4777-bea8-58fcfe7deb73
javax.faces.ViewState:-3601270081246135757:6121484162719565648[/text]

Yanıt (Response):
[text] [/text]

Bunları görünce tabi ki “Aman Tanrım didim”, neden mi? 🙂
Çünkü gelen yanıtta “redirect-url” yok! Sadece “update” var! Yani ajax işinde hata yapmışız (javax.faces.partial.ajax:true) ve bunu aşmak için önümüzde iki yol var;

  1. Primefaces commandButton özelliklerinde ajax=”false” demek
  2. Primefaces butonu yerine klasik JSF butonu kullanmak

Kullandığım buton

[xml][/xml]

1. yol
[xml] [/xml]

2. yol (primefaces butonunun css’inden faydalanamazsınız, elle eklemeniz lazım)
[xml]

[/xml]

Sonuç olarak bu kadar basit görünse de tarayıcı üzerindeki trafiği izlemeden ben anlayamadım. Bu arada tüm tarayıcılarda neredeyse standart haline geldi, “Developer Tools” deniliyor genelde ve F12 tuşu ile açabiliyorsunuz, bilmeyenler olabilir diye bahsedeyim dedim.

Bunların dışında Spring Security’nin “sendRedirect” yaptığı yeri ezerek (override) de bu işi yapabilirdik ama daha maliyetli olurdu. Nasıl yapılabileceği şuradaki cevapta üstad BalusC tarafından verilmiş 🙂

Sorunun temeline de şu kaynaktan bakılabilir.

Java, JSF, Primefaces, Spring kategorisine gönderildi | Yorum yapın

JSF 2 + PrimeFaces

PrimeFaces, JSF 2 için yazılmış bileşen kütüphanelerinin en başında gelmektedir. Şu an itibariyle de NetBeans geliştirme ortamında hazır gelen tek bileşen kütüphanesidir. Gelişmiş bir çok bileşenini ve detaylarını demo sayfalarında bulabilirsiniz.

Bu yazıya başlamadan önce…
Daha önce yazmış olduğum şu yazıları, bu makaleye başlamadan önce okumanızı tavsiye ederim.

  1. JSF Life Cycle
  2. JSF Model-View-Controller
  3. JSF 2’ye Giriş

Konular hakkında bilgili olanlar tabi ki okumasına gerek yok, lakin JSF 2’ye giriş yazısında oluşturduğumuz geliştirme ortamı üzerinden bu yazıya devam edeceğim için, en azından ona bakmanızda fayda var.

PrimeFaces ile Güçlenmek
JSF 2 projemizi PrimeFaces ile güçlendirmek sadece iki adımdan oluşmaktadır.

  1. PrimeFaces indirme sayfasından en son kararlı sürümü indirmek ve projenin kütüphaneleri arasına eklemek
  2. xhtml sayfalarının başındaki xmlns tanımları arasına aşağıdaki satırı eklemek.
xmlns:p="http://primefaces.org/ui"

Evet, sadece bu kadar! Bundan sonra sayfalarımız içinde

Görüldüğü üzere index.xhtml sayfası içerisine bileşenini eklemiş bulunmaktayız. Projeyi çalıştırıp index.jsf sayfasını çalıştırdığımızda aşağıdaki gibi bir görümüne sahip oluruz.

Bir sonraki yazıda bu JSF 2 + PrimeFaces uygulamamızı Ajax kullanarak geliştireceğiz.

Kolay gelsin.


							
Java, JSF kategorisine gönderildi | , , , ile etiketlendi | 5 Yorum

JavaServer Faces 2 (JSF 2)

JavaServer Faces (JSF), Java Komitesi tarafından standart web teknolojisi olarak kabul edilmiştir. Java ile web programlama yapmak isteyen bir kişinin mutlaka öğrenmesi tavsiye edilir. Ayrıntılı bilgiye http://javaserverfaces.java.net/ adresinden erişebilirsiniz.

JSF, Model-View-Controller (MVC) tabanlı olduğundan Java sınıflarımız ile görsel sayfalarımız yani önyüzümüz farklı farklı katmanlarda bulunmaktadır. Bu konuyu detaylı bir şekilde şu sayfada anlatmıştım.

Şimdi JSF 2 ile ilk uygulamamızı yapalım. Bize aşağıdaki malzemeler lazım daha doğrusu ben bunları kullanacağım;

Tomcat
Eclipse başlatıp yeni bir çalışma alanı (workspace) açalım. İlk olarak “Server”ı tanıtalım. Server tabında sağ tıklayarak New > Server yolunu takip ettikten sonra Tomcat’in yerini aşağıdaki gibi gösterebilirsiniz.

Proje Oluşturma
Şimdi “Package Explorer” ya da “Project Explorer” görünümünde New > Dynamic Web Project yolu ile aşağıdaki gibi projeyi oluşturuyoruz. Önce proje ismi gibi alanları dolduruyoruz.

Sonra ileri ve tekrar ileri diyerek aşağıdaki gibi “web.xml” dosyasını oluşturmasını sağlayıp “finish” butonuna basarız.

JSF 2 için Gerekli Jarlar
JSF 2 uygulamamızın çalışması için yapmamız gereken bir kaç adım var, ilk olarak en başta belirttiğimiz 2 adet jar dosyasını WEB-INF/lib dizini altına kopyalayalım, projemizin görünümü aşağıdaki gibi olmalı.

web.xml Ayarları
JSF 2 uygulamamızın server tarafından yorumlanabilmesi için web.xml içine şu satırları eklememiz lazım.

[xml]
<!– Faces Servlet –>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>

<!– Faces Servlet Mapping –>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
[/xml]

Bu satırları ekledikten sonra web.xml dosyasının görünümü aşağıdaki gibi olacaktır.

[xml]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>jsf2-helloworld</display-name>

<!– Faces Servlet –>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>

<!– Faces Servlet Mapping –>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
[/xml]

xhtml Sayfası Oluşturmak
Artık tüm altyapı hazırlıklarımız tamam, sıra geldi bir sayfa oluşturup çalıştırmaya. WebContent dizini altına index.xhtml adında bir dosya oluşturup aşağıdaki gibi düzenliyoruz.

[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>jsf2-helloworld</title>
</h:head>
<h:body>

Merhaba JSF 2

</h:body>
</html>
[/html]

Projenin Çalıştırılması
Tomcat’in menüsünden Add and Remove aracılığı ile projemizi Tomcat altına ekliyoruz.

Daha sonra Tomcat’i başlatıyoruz. Herhangi bir port değişikliği yapmadıysanız http://localhost:8080/jsf2-helloworld/index.jsf bağlantısına gidince karşımıza aşağıdaki ekran gelir.

En saf haliyle bir JSF 2 uygulamasına sahibiz. Bundan sonraki derste bu uygulamamıza, PrimeFaces component suite eklemesi yapacağız. Uygulamayı sade halinden PrimeFaces’ın sağladığı bileşenlerle zenginleştireceğiz.

Kolay gelsin.

Java, JSF kategorisine gönderildi | , , , ile etiketlendi | 5 Yorum

XML’deki Listeyi Okuyarak Nesnelere Çevirme

XStream kütüphanesinden buradaki yazıda bahsetmiştim. Java’dan XML’e, XML’den Java’ya dönüşüm yapmamıza yardımcı oluyordu. Yalnız bir konuyu es geçtiğimi farkettim, ya nesne yerine nesneler olsa o zaman nasıl bir çıktı alacağız? XML’de liste halinde bir sürü nesne olsa o zaman nasıl Java’ya çevireceğiz? Bu yazıda bu konuları aydınlatmaya çalışacağım, fakat ilk yazının mutlaka okunması gerek, çünkü oradaki “Ders” ve “Ogretmen” sınıflarını kullanacağım.

Tek bir “Ders” nesnesinin XML çıktısını oluşturmak çok kolaydı ve aşağıdaki gibi bir sonuç veriyordu.

[xml]
<Ders>
<id>1</id>
<ad>Software Engineering</ad>
<ogretmen>
<ad>Yasin</ad>
<soyad>Kenar</soyad>
</ogretmen>
</Ders>
[/xml]

Peki ama birden fazla “Ders” nesnesi olsa ne olacak, çıktı nasıl şekillenecek ve öncesinde biz nasıl ürettireceğiz 🙂 Aşağıda kodda, iki adet “Ogretmen” nesnesi üretip bunları kullanarak da üç adet “Ders” nesnesi oluşturacağım (15 ve 19. satırlar arası). Sınıfların özelliklerine yukarıda bağlantısını verdiğim sayfadan bakabilirsiniz.

Sonra bu oluşturduğum nesneleri bir listeye ekleyeceğim (21 ve 24. satırlar arası).

Son olarak da XStream nesnemin toXML() metoduna “listemi” vereceğim. Evet önceki örnekte direk “Ders” nesnemi vermiştim, bu sefer listeyi veriyorum (26 ve 28. satırlar arası).

[java]
package org.sukru.xstream.test;

import java.util.ArrayList;
import java.util.List;

import org.sukru.xstream.entity.Ders;
import org.sukru.xstream.entity.Ogretmen;

import com.thoughtworks.xstream.XStream;

public class XStreamListTest {

public static void main(String[] args) {

Ogretmen o1 = new Ogretmen("Yunus Emre", "Aslan");
Ogretmen o2 = new Ogretmen("Yasin", "Kenar");
Ders d1 = new Ders(1L, "Türkçe", o1);
Ders d2 = new Ders(2L, "Arapça", o2);
Ders d3 = new Ders(3L, "Farsça", o2);

List<Ders> dersList = new ArrayList<Ders>();
dersList.add(d1);
dersList.add(d2);
dersList.add(d3);

XStream xstream = new XStream();
xstream.alias("Ders", Ders.class);
String xml = xstream.toXML(dersList);
System.out.println(xml);
}
}
[/java]

En son olarak da çıktıyı aldığımızda XML aşağıdaki gibi oluyor.

[xml]
<list>
<Ders>
<id>1</id>
<ad>Türkçe</ad>
<ogretmen>
<ad>Yunus Emre</ad>
<soyad>Aslan</soyad>
</ogretmen>
</Ders>
<Ders>
<id>2</id>
<ad>Arapça</ad>
<ogretmen>
<ad>Yasin</ad>
<soyad>Kenar</soyad>
</ogretmen>
</Ders>
<Ders>
<id>3</id>
<ad>Farsça</ad>
<ogretmen reference="../../Ders[2]/ogretmen"/>
</Ders>
</list>
[/xml]

Farkları neler? Birden fazla ders nesnesi var
[xml]
<list>
</list>
[/xml]
arasında yer alıyor ve id bilgisi 3 olan “Ders” nesnesinin “ogretmen” bilgisi
[xml]
<ogretmen reference="../../Ders[2]/ogretmen"/>
[/xml]
şeklinde 2. sıradaki “Ders”in “ogretmen” bilgisi ile aynı olarak gösteriliyor.

Şimdi asıl konumuza gelelim, bu xml çıktısını alıp yeni bir xml dosyası oluşturalım, adını da “dersler.xml” olarak verip projemizin altında oluşturacağımız “files” dizini altında oluşturalım. Aşağıda projenin yeni yapısını görebilirsiniz.

Bu xml dosyasını okuyarak XStream in fromXML() metodu ile nesnemize atayacağız. Adım adım işlemlerimizi yazıp gerçekleyelim.

  1. Dosya ismini al. (“files/dersler.xml”)
  2. XStream nesnesi oluştur ve alias tanımla. (XML de nesne “Ders” olarak tutulduğu için alias tanımlamalıyız. Paket ismi ile olsaydı gerek kalmazdı. )
  3. BufferedReader nesnesine bu dosyayı okuyarak at.
  4. XStream nesnesi üzerinden fromXML metoduna BufferedReader nesnesini ver, listeyi alsın.
  5. Listeyi dönerek nesneyi aldığımızı gösterelim.

Kodunu yazarsak;

[java]
package org.sukru.xstream.test;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List;

import org.sukru.xstream.entity.Ders;

import com.thoughtworks.xstream.XStream;

public class XStreamReadingListTest {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
String file = "files/dersler.xml";
BufferedReader reader = null;
XStream xstream = new XStream();
xstream.alias("Ders", Ders.class);
try {
reader = new BufferedReader(new FileReader(file));

} catch (FileNotFoundException e) {
System.out.println("[" + file + "] adresinde belirtilen dosya bulunamadı!");
e.printStackTrace();
}

StringBuffer sb = new StringBuffer();

List<Ders> dersList = (List<Ders>) xstream.fromXML(reader);
for (Ders ders : dersList) {
sb.append(ders.getId()).append(" – ").append(ders.getAd()).append("\t").append(ders.getOgretmen().getAd()).append("\n");
}
System.out.println(sb);
}
}
[/java]

En sonunda ekrana bastırmıştık, çıktıyı da verelim 🙂

1 - Türkçe Yunus Emre
2 - Arapça Yasin
3 - Farsça Yasin

Bu kodları kendi ortamınızda derleyip adım adım debug yaparsanız, çok daha iyi anlayabilirsiniz.

Kolay gelsin.

Java, XML kategorisine gönderildi | , , , , ile etiketlendi | 6 Yorum