The Swarm: WildFly ile Java EE mikro hizmetleri

Portakalkafa

Global Mod
Global Mod
Yeni WildFly Swarm sepetinin ilk alfası şimdi çıktı. Bu, yürütülebilir bir Java arşivi elde etmek için gereken sayıda uygulama sunucusunu gerçek uygulamayla birlikte paketlemenize izin vermelidir. Bu “tek kavanoz uygulaması” veya “yağ kavanozu” kavramı, genellikle mikro hizmet mimarileri için doğru yaklaşım olarak görülür.


Java EE alanından haberler birikiyor. WildFly 9 uygulama sunucusu için en son sürüm adayına ek olarak, Java EE 7 için Bakım Sürümü (MR) de hazırlanmıştır. Ve Java EE 8 JSR de uzun süredir resmi olarak mevcuttur. Ancak klasik Java EE yığınından gelen bu haber, güncel gelişmelerin gerisinde kalıyor. Spesifikasyonda “kapsayıcı” veya “mikro hizmetler” kelimelerini bulamazsınız. En azından WildFly üzerine inşa edilen uygulamalar için bu boşluk bir şekilde kapanıyor.

WildFly Swarm: Yürütülebilir mikro hizmetler


Swarm’ın “single jar application” veya “fat jar” konsepti, bazıları tarafından mikro hizmet mimarileri için doğru yaklaşım olarak görülüyor. Daha fazla felsefe yapmak istemeden, bu yeni sürüme daha yakından bakmak oldukça heyecan verici. Aşağıdaki örnekle, bunun sadece bir teknik örneği olduğunu ve mikro hizmetler için tek doğru yol olmadığını vurgulamak isterim.

Verilen, Maven tabanlı basit bir Java EE 7 web uygulamasıdır. İçinde pom.xml sadece bir bağımlılık olarak duruyor:

<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>

6K WAR dosyası oluşturulur. WildFly üzerinde çalışırken, basit bir JSON çıktısına:

{
"firstName": "Markus",
"lastName": "Eisele",
"streetAddress": "Werner-von-Siemens-Ring 14",
"city": "Grasbrunn",
"pcode": "85630",
"phoneNumbers": [
{
"type": "mobile",
"number": "111-111-1111"
},
{
"type": "home",
"number": "222-222-2222"
}
]
}


Şimdiye kadar her şey o kadar da heyecan verici değil. Bu basit uygulamayı bağımsız yürütülebilir bir arşive dönüştürmek için Swarm’ın devreye girdiği yer burasıdır. Bunu yapmak için az önce oluşturduğunuz projeye yeni bir eklenti eklemeniz yeterlidir:

<plugin>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-plugin</artifactId>
<version>${version.wildfly-swarm}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>

Sürüm numarasını ayarlamanın en iyi yolu, Maven’deki bir özelliktir. pom.xml. Swarm şu anda 1.0.0.Alpha1 olarak mevcuttur. İşte Windows kullanıcıları için küçük bir uyarı. Tam olarak bu sürüm henüz Windows’ta çalışmıyor. Bununla birlikte, en son ana sürüm zaten düzeltmeyi içerir ve Swarm’ı yerel olarak oluşturan herkes hızlı bir şekilde kendilerini ve 1.0.0.Alpha2-SNAPSHOT kullanıldığında, sonuç Windows’ta da görüntülenebilir.

Ancak, eklenti tüm işi kendi başına yapmaz. Kullanılan Java EE özellikleri bağımlılıklar aracılığıyla eklenmelidir. Küçük örnek için, bu sadece JAX-RS işlevidir:


org.wildfly.swarm
yaban sinekleri sürüsü
${version.wildfly-swarm}
tedarik edilen

Daha sonra proje aracılığıyla başlatılabilir mvn paketi inşa edilecek Beklenen sonuca ek olarak, sürü-şampiyon-1.0-SNAPSHOT.wardosya artık önemli ölçüde daha büyük sürü-örnek-1.0-SNAPSHOT-swarm.jar İçinde hedef/ dizin indi. Şimdi neredeyse 30 MB.

Kalın JAR’ı deneyin


Geriye kalan tek şey, çok küçük olmayan JAR dosyasını başlatmak ve test etmektir:

java -jar swarm-1.0-SNAPSHOT-swarm.jar

Çıktı, kullanılan alt sistemlerin çeşitli sürümlerinin bir göstergesini sağlar. Şimdi kanıt:

C:>curl -v http://localhost:8080/rs/customer
* Connected to localhost :):1) port 8080 (#0)
> GET /rs/customer HTTP/1.1
> User-Agent: curl/7.30.0
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Type: application/json
< Content-Length: 221
< Date: Fri, 08 May 2015 07:59:00 GMT
<
{"firstName":"Markus","lastName":"Eisele","streetAddress":
"Werner-von-Siemens-Ring 14","city":"Grasbrunn",
"pcode":"85630","phoneNumbers
":[{"type":"mobile","number":"111-111-1111"},
{"type":"home","number":"222-222-2222"}]}* Connection #0 to
host localhost left intact

Diğer spesifikasyonları kullanmak isterseniz, Swarm blogunda daha fazla ayrıntı bulabilirsiniz. Servlet’ler, ShrinkWrap ile JAX-RS, dağıtım yoluyla DataSource, mesajlaşma ve çok daha fazlası şu anda desteklenmektedir.

Geri bildirim ve işbirliği istiyorsunuz. Dilerseniz hakkında tüm bilgilere ulaşabilirsiniz. @WildFlySwarm– Twitter yönetimi. Özellikleri kaçırırsanız veya hatalar bulursanız, doğrudan GitHub projesi üzerinde çalışabilirsiniz.


()




Haberin Sonu



 
Üst