Burak IŞIKLI

Computer scientist living in Istanbul, Turkey. Data scientist at Turkcell, Traveller, Rower, Sailor

Twitter Github Linkedin Mail

Google App Engine Java İpuçları

Google, geçtiğimiz günlerde app engine yani uygulama sunucusunu piyasaya sürdü. İlk izlenimlerimin ardından app engine ile ilgili birkaç detay vermek istedim. Yemek tarzındaki kurulumu birçok sitede kurulumun nasıl yapılacağını bulmanız mümkün. Ben de ayrıca java programcıları ve teknolojileri derneği tarafından yayınlanmış sitenin pdf dosyasını veriyorum.

Kurulumu yapıp örnek bir proje oluşturduktan sonra uygulamanın nasıl çalıştığını anlayalım. Öncelikle deploy yapmadan projeniz web’e atılmaz. Bu nedenle de yerel alanda istediğiniz kadar değişiklik yaparken asıl sayfanız(belirttiğinizad.appspot.com) herhangi bir değişiklik olmaz.

Her zaman belirttiğiniz proje isminin servlet’i oluşturuluyor. Örneğin deneme diye proje oluşturuyorsanız servlet’inizin adı otomatik olarak denemeServlet oluyor. Peki bunu nasıl değiştireceğiz? Refactor kullanmanız ismini değiştirmek için yeterli gelmiyor. Bunu deneyip deploy ederseniz karşınıza boş bir sayfa çıkacaktır. Bildiğiniz üzere bu servlet’imizin bağlı olduğu web.xml dosyası olması gerekiyor. İşte bu dosya war klasörünün altındaki web-inf klasöründedir. Aşağıdakine benzer bir dosya karşınıza gelecektir.

web.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<web-app 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" version="2.5">;  
<servlet>  
<servlet-name>Deneme</servlet-name>  
<servlet-class>edu.burakkk.google.app.DenemeServlet</servlet-class>  
</servlet>  
<servlet-mapping>  
<servlet-name>Deneme</servlet-name>  
<url-pattern>/deneme</url-pattern>  
</servlet-mapping>  
<welcome-file-list>  
<welcome-file>index.html</welcome-file>  
</welcome-file-list>  
</web-app>

Buradan servlet-class ismini de değiştirerek servlet isminde kolayca değişiklik yapabilirsiniz. Ayrıca url-pattern ile servletinizin çalışacağı uzantıyı da değiştirebilirsiniz. deneme yerine deneme.do yapabilirsiniz. Başlangıçta google app engine tarafından oluşturulan index.html yerine de welcome-file değiştirerek de kendi istediğiniz dosyayı hatta çalıştıracağınız servlet’i yapabilirsiniz. Bunun anlamı xxx.appspot.com sayfasını açtığınızda kendi tarafından oluşturulmuş index sayfası yerine sizin sayfanız çıkabilir.

Eğer uygulama ismini veya versiyonu değiştirmek istiyorsanız aynı dizindeki(war/web-inf) appengine-web.xml dosyasından yapacaksınız.

appengine-web.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">  
<application>bisikli</application>  
<version>1</version>
<!-- Configure java.util.logging -->

<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"></property>
</system-properties>

</appengine-web-app>

Application kısmından uygulama ismini versiyon kısmından da versiyonunu değiştirebilirsiniz.

Bunları dikkate alarak anasayfamızda gerçek ip’nizi çıkaran bir servlet yapalım.

edu.burakkk.google.app isimli paket ipAlma isimli servlet yaratıyoruz.

ipAlma.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
package edu.burakkk.google.app;

import java.io.IOException;  
import java.io.PrintWriter;

import javax.servlet.http.\*;

@SuppressWarnings("serial")  
public class ipAlma extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {  
        resp.setContentType("text/html");  
        PrintWriter out = resp.getWriter();  
        out.println("IP: " + req.getRemoteHost());  
        out.flush();  
        out.close();  
    }  
}

web.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<web-app 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" version="2.5">;  
<servlet>  
<servlet-name>ipAlma</servlet-name>  
<servlet-class>edu.burakkk.google.app.ipAlma</servlet-class>  
</servlet>  
<servlet-mapping>  
<servlet-name>ipAlma</servlet-name>  
<url-pattern>/ipAlma</url-pattern>  
</servlet-mapping>  
<welcome-file-list>  
<welcome-file>ipAlma</welcome-file>  
</welcome-file-list>  
</web-app>

Bu projeyi deploy ettiğinizde anasayfanızda IP: XXXXX şeklinde ip’nizi yazan bir web sayfası çıkacaktır. Örnek sayfaya http://bisikli.appspot.com/(sizinUygulamaAdınız.appspot.com) adresinden ulaşabilirsiniz. Ayrıca aynı sayfaya servlet’mize http://bisikli.appspot.com/ipAlma bu adresle de ulaşabiliriz.


Comments !