Menu

15 Nisan 2013 Pazartesi

Ankara JUG Nisan 2013 Etkinliği


Ankara JUG etkinliklerine devam ediyor! Bu ay etkinliğimize uzun yıllardır Java konusunda danışmanlık ve eğitim hizmeti veren Devinim Yazılım Eğitim Danışmanlık şirketinde Danışman ve Eğitmen olarak çalışmakta olan Ertuğrul Aslan konuğumuz olacak.

2013 Nisan toplantımız her zamanki gibi Bilkent Cyberpark Dr. Fikret Yücel Konferans Salonu'nda düzenlenecek. Ancak bu sefer elimizde olmayan nedenlerden dolayı küçük bir farklılık olacak. Etkinliklerimizi düzenlediğimiz salondaki yoğunluktan dolayı Nisan toplantımızı, normal tarihinden 1 hafta sonra, Mayıs ayı başında düzenleyeceğiz. Dolayısı ile etkinlik tarihimizi2 Mayıs 2013 - Perşembe günü saat 19:00 olarak ayarladık. Etkinliğimize aşağıdaki bağlantıyı kullanarak kaydınızı yaptırabilirsiniz.


Konuşmacı: Ertuğrul ASLAN
Ertuğrul Aslan, 2005 yılında java ile tanışmış olup, profesyonel olarak 2007 yılından bu yana çok büyük ölçekli özellikle Finans projelerinde, projelerin tasarımından, kodlanmasına, veritabanlarının oluşturulması gibi bütün adımlarında görev almıştır. Bu projelerde Java EE 5 ve Java EE 6'nin teknolojileri olan EJB 3.1, JPA 2, Web Service ve JSF 2 kullanarak projeler geliştirmiştir. Bu projelere paralel olarak 2007 yılında Oracle veritabanı ile çalışmaya başlamış ve geliştirdiği projelerin veritabanlarının hazırlanmasından performans iyileştirme gibi bütün yönetimlerinde de görev almıştır. Farklı yazılım şirketlerinde Senior Java Developer ve Oracle DBA olarak çalışmış olan Ertuğrul Aslan, aynı zamanda 2008 yılından bu yana, Java ve Oracle eğitimleri vermektedir. Oracle Database 11g Administrator Certified Professional (OCP) sahibidir.
 

Etkinlik Adı: JPA 2

JPA 2 başlıklı etkinlikte "JPA nedir?", "Neden JPA'ya ihtiyaç duyarız" ve "ORM nedir?" sorularına bulacağımız cevaplarla birlikte, JPA hakkinda yanlis bilinenler, Hibernate ile karsilastirilmasi, JPA providerlar, Persistence Conext ve persistence.xml, EntityManager ve komutları, Relatations, JPQL sorgu dili, JPA concurrency konularında bilgiler edinebileceksiniz. Bunlarla birlikte Java EE 7 ve JPA 2.2 ile gelecek yeni ozelliklere de değinilecektir. Örnek demo uygulamalarla, teorik olarak anlatılan konuların, uygulamada nasıl kullanılabileceğini deneyimleme şansına sahip olacaksınız.
 
Etkinliklerimizde katılımcılarımıza çeşitli hediyeler veriyoruz bildiğiniz gibi. Hediyelerimiz çekiliş ile verilecektir. Bu etkinliğimizin hediyeleri:
  • Bu ay etkinliğimizin sponsorlarından Devinim Yazılım Eğitim Danışmanlık firması tüm katılımcılara Java eğitimleri için %20 indirim hediye ediyor.
  • Ayrıca Devinim Yazılım Eğitim Danışmanlık firması 2 şanslı katılımcımıza Java eğitimlerinde kullanılmak üzere %50 indirim hediye edecek.
  • 2 şanslı katılımcımıza Oracle Academy Mug'ı
  • Etkinliklerimizin global sponsoru JetBrains tarafından katılımcı sayımıza göre ücretsiz lisans hediye edilecektir. Eğer toplam 30+ katılımcımız olursa 1 adet JetBrains ürün lisansı, 50+ katılımcımız olması durumunda 2 adet JetBrains ürün lisansı hediye edilecektir.
  • Etkinliklerimizin global sponsoru Atlassian tarafından 1 adet Atlassian ürün lisansı hediye edilecektir.
  • Etkinliklerimizin global sponsoru O'Reilly tarafından 1 şanslı katılımcımıza Sticker Seti ve Not Defteri hediye edilecektir.
  • Bu hediyelere ek olarak Oracle Academy'nin sürpriz hediyeleri sizleri bekliyor olacak!

Bu etkinliğimizde ayrıca sizlere küçük ikramlarımız olacak. İş veya okul çıkışı hiçbir yere uğramadan etkinliğimize gelebilirsiniz :). Etkinliklerimiz sizlerle güzel ve keyifli... Hem etkinliğimize, hem de etkinlik sonrası sohbetimize bekliyoruz. Görüşmek üzere...

5 Nisan 2013 Cuma

PRVF-4007 : User equivalence check failed for user oracle

RAC kurulumda, ortamlarin kuruluma hazir olup olmadigi anlamak icin, asagidaki gibi testler yapariz bu testleri yaparken yukaridaki gibi hata aliyorsaniz, asagidaki adimlari takip etmelisiniz.


[oracle@rac1 grid]$ ./runcluvfy.sh stage -pre crsinst -n rac1,RACG2 -r 11gR2 -fixup -verbose

Performing pre-checks for cluster services setup

Checking node reachability...

Check: Node reachability from node "rac1"
  Destination Node                      Reachable?
  ------------------------------------  ------------------------
  rac1                                 yes
  RACG2                                 yes
Result: Node reachability check passed from node "rac1"

Checking user equivalence...

Check: User equivalence for user "oracle"
  Node Name                             Comment
  ------------------------------------  ------------------------
  rac1                                 failed
  RACG2                                 failed
Result: PRVF-4007 : User equivalence check failed for user "oracle"

ERROR:
User equivalence unavailable on all the specified nodes
Verification cannot proceed

Pre-check for cluster services setup was unsuccessful on all the nodes.

-- TO AVOID

PRVF-4007 : User equivalence check failed for user "oracle



SETUP SSH USER EQUIVALENCE IN 11GR2

In new 11GR2 ssh User equivalence can be setup as below.

[oracle@rac1 grid]$ ll
total 40
drwxrwxrwx  9 oracle oinstall 4096 Apr  1 08:11 doc
drwxrwxrwx  4 oracle oinstall 4096 Apr  1 08:11 install
drwxrwxrwx  2 oracle oinstall 4096 Apr  1 08:11 response
drwxrwxrwx  2 oracle oinstall 4096 Apr  1 08:11 rpm
-rwxrwxrwx  1 oracle oinstall 3795 Apr  1 08:11 runcluvfy.sh
-rwxrwxrwx  1 oracle oinstall 3227 Apr  1 08:11 runInstaller
drwxrwxrwx  2 oracle oinstall 4096 Apr  1 09:05 sshsetup
drwxrwxrwx 14 oracle oinstall 4096 Apr  1 08:11 stage
-rwxrwxrwx  1 oracle oinstall 4228 Apr  1 08:11 welcome.html


cd sshsetup
./sshUserSetup.sh -user oracle -hosts rac1,rac2 -advanced -exverify -confirm

Below is method to setup ssh Manually step-by-step.

ON NODE-1

rac1@:/home/oracle : $mkdir -p ~/.ssh
rac1@:/home/oracle : $chmod 700 ~/.ssh
rac1@:/home/oracle : $/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
4a:3b:fe:ea:03:d3:cf:6f:d3:06:fb:1a:ed:1e:b0:6b oracle@rac1.localdomain.com
rac1@:/home/oracle : $/usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
5e:cb:46:cc:d8:f1:01:44:3e:7a:20:eb:ce:5d:d4:15 oracle@rac1.localdomain.com

ON NODE-2

rac2@:/home/oracle : $mkdir -p ~/.ssh
rac2@:/home/oracle : $chmod 700 ~/.ssh
rac2@:/home/oracle : $/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
dc:4e:e7:c3:ee:71:84:e7:2e:72:99:3d:b0:0a:2b:f9 oracle@rac2.localdomain.com
rac2@:/home/oracle : $/usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
5a:49:d4:e2:b9:5d:e9:f8:f5:bb:ce:7c:4b:f4:dd:6c oracle@rac2.localdomain.com

ON NODE-1

rac1@:/home/oracle : $ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'rac1 (192.168.100.181)' can't be established.
RSA key fingerprint is 27:ac:4b:9a:e3:d2:ae:6d:2b:71:99:8d:b9:c0:b1:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac1,192.168.100.181' (RSA) to the list of known hosts.
oracle@rac1's password:
rac1@:/home/oracle : $ssh rac1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
rac1@:/home/oracle : $scp /home/oracle/.ssh/authorized_keys oracle@rac2:~/.ssh/
oracle@rac2's password:
authorized_keys                                                                                                          100% 1030     1.0KB/s   00:00

ON NODE-2

rac2@:/home/oracle/.ssh : $ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'rac2 (192.168.100.182)' can't be established.
RSA key fingerprint is 27:ac:4b:9a:e3:d2:ae:6d:2b:71:99:8d:b9:c0:b1:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2,192.168.100.182' (RSA) to the list of known hosts.
oracle@rac2's password:
rac2@:/home/oracle/.ssh : $ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
rac2@:/home/oracle/.ssh : $scp /home/oracle/.ssh/authorized_keys oracle@rac1:~/.ssh/
The authenticity of host 'rac1 (192.168.100.181)' can't be established.
RSA key fingerprint is 27:ac:4b:9a:e3:d2:ae:6d:2b:71:99:8d:b9:c0:b1:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac1,192.168.100.181' (RSA) to the list of known hosts.
oracle@rac1's password:
authorized_keys                                                                                                          100% 2060     2.0KB/s   00:00

--Confirm ssh on both Nodes.

rac1@:/home/oracle : $ssh rac2 date
Mon Aug  6 09:20:48 EDT 2012
rac1@:/home/oracle : $ssh rac1 date
Mon Aug  6 09:20:43 EDT 2012

rac2@:/home/oracle/.ssh : $ssh rac2 date
Mon Aug  6 09:20:37 EDT 2012
rac2@:/home/oracle/.ssh : $ssh rac1 date
Mon Aug  6 09:20:31 EDT 2012

2 Nisan 2013 Salı

INS-40922 Invalid SCAN Name - unresolved to IP address

    RAC kurulumda asagidaki hatayi aliyorsaniz, /etc/hosts icindeki scan name`i kontrol etmeniz gerekmektedir.


$ cat /etc/hosts
  # SCAN
  20.20.20.55   scan.localdomain        scan
buradaki scan ile ayni degerde yani "scan" yazmaniz gerekmektedir

23 Mart 2013 Cumartesi

ORA-00838: Specified value of MEMORY_TARGET is too small

ORA-00838: Specified value of MEMORY_TARGET, evet bu hatanin sebebi memory_target degerinin parametre dosyasi icindeki degerinin ihtiyacimiz olan degerden kucuk olmasi. Bir cok sebebi olabilir, mesala sga_target degeri yuksek verilmistir ve db yeniden baslatilirken, memory_target degeri kucuk ise verir vs.

cozum asagidaki adimlari yapabiliriz;

SQL> startup
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1172M

SQL> create pfile='/home/oracle/pfile.ora' from spfile;

File created.

spfile`den pfile olusturup, icindeki memory_target degerini yeniden veriyoruz.

$ vi '/home/oracle/pfile.ora'
*.memory_target=1300234240

daha sonra, pfile`den spfile olusturup veritabanimizi aciyoruz.

SQL> create spfile from pfile='/home/oracle/pfile.ora';

File created.

SQL> startup
ORACLE instance started.

Total System Global Area  534462464 bytes
Fixed Size                  2212736 bytes
Variable Size             524291200 bytes
Database Buffers            4194304 bytes
Redo Buffers                3764224 bytes
Database mounted.
Database opened.

18 Mart 2013 Pazartesi

Weblogic ile authentication ve authorization

        Merhaba bu yazimizda, weblogic server uzerinde olusturdugumuz kullanicilara yetki nasil verebiliriz ve uygulama bolumde nasil kullanabiliriz bunu paylasacam. Yine diger makalelerimde oldugu gibi, ekran goruntuleri ile birlikte verecegim daha anlasilir olmasi acisindan. Simdiden herkese faydali olmasi dilegiyle. 

Ve baslayalim :)

1. Weblogic Admin Konsola login oluyoruz

2. Security Realms linkini seciyoruz.

3. myrealm`i linkini secerek devam ediyoruz.

4. User and Groups tabinda New diyerek yeni bir kullanici olusturalim

5. ertugrul isminde bir kullanici eklerek devam ediyorum

6. Yeni bir kullanici daha ekleyelim

7.Ok

8. Welogic kismindaki yapilacaklari bitirdik simdi uygulama tarafina geciyoruz. Bir Jsf uygulamasi olacak

9. Ve asagidaki adimlari takip edelim.

10.

11.

12. uygulamamizin web.xml icerisine asagidaki bolumu ekliyoruz.


13. weblogic.xml icerside asagidaki gibi olacak


14.login.xhtml olusturuyoruz.


15. login.xhtml icerisi


16. LoginBean.java classimizi olusturuyoruz.


17. LoginBean.java classi ici

18.index.xhtml

19. Uygulamamizi weblogic server`a deploy ettikden sonra index sayfasina gitmek istesek bile bizi login sayfasina yonlendirecektir.


20.

Uygulamanin kodlari : 

17 Mart 2013 Pazar

Weblogic JMS uygulamasi

Merhaba, bu yazimda weblogic uzerinde bir Java Message Service (JMS) uygulamasini nasil yapabiliriz, ilk bastan en sona ekran goruntuleri ile birlikte paylasacagim. Bu uygulamayi yaparken 30`un uzerinde ekran goruntusu ortaya :) cikti. Faydali olmasi dilegiyle.

1. Weblogic Admin Console`u actikdan sonra
 Summary of Deployments >Summary of Services: JMS >Summary of JMS Servers altinda

2. DenemJMS adinda bir JMS Server olusturuyoruz.

3. Olusturdugumuz JMS Server`i bir managed server`a atiyoruz. (Clusterada atabilirsiniz)

4. asagidakileri uyguluyoruz.

5. JMS modules ekliyoruz.

6. New diyerek ekliyoruz



7. Managed Server`imizi seciyoruz

8. Finish diyerek bitirelim

9. Herseyin basarili oldugu goruluyor. ve herhangi bir restarta ihtiyac yoktur.

10. dosya ismini ne verdigi gorebiliyoruz.


11. SImdi bir Queue olusturuyoruz.


12. JNDI ismini verip next diyoruz.

13. Subdeployment secerek devam ediyoruz.

14. Ok

15. Finish

16.

17.

18. Simdi ise JMS server`a connection kurabilmek icin ConnectionFactory olusturuyoruz.

19. Asagidaki olusturarak devam ediyoruz.

20. Server`a secerek devam diyoruz.

21. ConnectionFactory ve Queue`muz gorunuyor.

22. Simdi ise Netbeans`de bir EJB module olusturup MDB bean`imiz olusturuyoruz.

23. Next

24. Next

25. Weblogic Server`a secerek devam ediyoruz.

26. Message-Driven Bean`imizi olusturuyoruz.

MDBExample.java
package tr.com.devinim.example;
import javax.ejb.ActivationConfigProperty;import javax.ejb.MessageDriven;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;
/** * * @author easlan */@MessageDriven(mappedName = "jms/myQueue", activationConfig = {    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")})public class MDBExample implements MessageListener {        public MDBExample() {    }        @Override    public void onMessage(Message message) {        try {            TextMessage tm = (TextMessage) message;            System.out.println("Geriye donen mesaj: " + tm.getText());        } catch (JMSException jex) {            System.out.println("Exception: " + jex);        }    }}



27. Simdi ise Olusturdugumuz MDB`mizi cagiracak JSF projemizi olusturuyoruz.

28. Next

29. Weblogic Server`imizi seciyoruz.

30. Java Server Faces Frameworkumuzu secip devam ediyoruz.
MessageYayinlayiciBean.java

package tr.com.devinim.jsf;
/** * * @author easlan */import javax.annotation.Resource;import javax.enterprise.context.RequestScoped;import javax.faces.application.FacesMessage;import javax.faces.context.FacesContext;import javax.inject.Named;import javax.jms.*;
@Named(value = "mesajBean")@RequestScopedpublic class MessageYayinlayiciBean {
    @Resource(mappedName = "jms/myQueue")    private Queue myQueue;    @Resource(mappedName = "jms/myQueueFactory")    private ConnectionFactory myQueueFactory;    private String mesaj;
    public MessageYayinlayiciBean() {    }
    public String getMesaj() {        return mesaj;    }
    public void setMesaj(String mesaj) {        this.mesaj = mesaj;    }
    public void mesajGonder() {        FacesContext facesContext = FacesContext.getCurrentInstance();        try {            sendJMSMessageToMyQueue(mesaj);            FacesMessage facesMessage = new FacesMessage("Mesaj gonder: " + mesaj);            facesMessage.setSeverity(FacesMessage.SEVERITY_INFO);            facesContext.addMessage(null, facesMessage);        } catch (JMSException jmse) {            FacesMessage facesMessage = new FacesMessage("Mesaj gonderilemedi: " + mesaj);            facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);            facesContext.addMessage(null, facesMessage);        }    }
    private Message createJMSMessageForjmsMyQueue(Session session, Object messageData) throws JMSException {        TextMessage tm = session.createTextMessage();        tm.setText(messageData.toString());        return tm;    }
    private void sendJMSMessageToMyQueue(Object messageData) throws JMSException {        Connection connection = null;        Session session = null;        try {            connection = myQueueFactory.createConnection();            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);            MessageProducer messageProducer = session.createProducer(myQueue);            messageProducer.send(createJMSMessageForjmsMyQueue(session, messageData));        } finally {            if (session != null) {                try {                    session.close();                } catch (JMSException e) {                    e.printStackTrace();                }            }            if (connection != null) {                connection.close();            }        }    }}

index.html




Ve son olarak. Once EJB`mizi (MDB) daha sonrada JSF uygulamamizi weblogic server`a deploy ederek bitirelim ve test edelim.



JSf uygulamamizda deniyoruz.

Asagida ise managed serverimizin logu

Umarim faydali bir makale olmustur.