Ekibim şimdi, OSGi içinde Scalate için Scala derleme ve yürütme işlemine sahip.
Genel olarak, ScalaCompiler ayarlarının, ilgili OSGi paketlerine karşılık gelen bir dizi AbstractFile nesnesi bulunmalıdır. Bu, @michid tarafından referans olarak Guggla tarafından desteklenmektedir. Ancak Guggla, AbstractFile katmanını sağlarken, bir OSGi ortamında SoyutDosya örneklerinin nasıl oluşturulacağı konusunda henüz bir örnek veya kod sağlamamaktadır. Bunu yapmak için örnek kod, Sling projesinde (Guggla'nın menşeinin kendisi) ve Scalate projesinde bulunabilir (bkz. ScalaCompiler).
ServiceMix projesinden OSGi-ified scala demetleri (compiler ve library) seçtik. Scala-derleyici paketindeki issue SMX-1048 (with patch).
Asıl amacımız Scalate'de çalışmayı sağlamaktı ve bu cevabın geri kalanı bu projeye özgüdür.
Scalate kodunda, derleyici sınıf yolunun yanı sıra sanal AbstractFile katmanı da dahil olmak üzere OSGi ortamında çalışmak için gereken mantığın çoğu zaten vardı.
1) ScalaCompiler sınıfının OsgiCompiler geçersiz kılma düzgün etkinleştirilen değildi ve bu yüzden derleyicisi sınıf yolu girdi olarak algılanan değildi paket ve
: Ancak Çalıştırmak için (
https://github.com/scalate/scalate/pull/16) Scalate yama gerekli
2) Şablon yürütme (çalışma zamanı) sınıf yükleyicisi, skalat-çekirdek paketinin sınıf yükleyicisine ayarlandı, bu da çalışma zamanında CNFE'ye neden oldu.
Yukarıdaki istek talebi, çalışma zamanında iş parçacığı sınıf yükleyicisine varsayılan olarak bir OSGi ortamında Scalate yapılandırır. Bu, arayanın açıkça enjekte etmesi gerekmeden arayanın sınıf yükleyicisine bir referans almanın en kolay yolu gibi görünmektedir (örneğin, bir şablon hizmeti veren bir Spring-DM osgi:service
beyanı, otomatik olarak ayarlamak için context-class-loader="service-provider"
özniteliğini kullanabilir. Scalate OSGi'nin çalışma zamanı davranışı, zaten TCCL'yi kullanan mevcut derleme zamanı davranışına karşılık gelir. Bu nedenle, bir Scalate arayıcısı, TCCL'yi kendi sınıf yükleyicisine ayarlamalı veya istenen sınıf yükleyiciyi şablon motoruna açıkça enjekte etmelidir. Şablonu yürütmeden önce templateEngine.classLoader = ...
31-Ağustos-2012 Güncelleştirmesi: Scalate master artık bu yazımda belirtilen tüm yamaları içerir.
10-Nisan 2013 Güncelleştirmesi: Scalate 1.6.1, çalışma zamanı şablonu derlemesi ile Scala derleyicisi aracılığıyla OSGi uyumludur. Ayrıca Scala 2.10 ve üstü, yayınlandığı gibi geçerli OSGi paketleridir.
Apache Sling'in Scala komut dosyası motoru https://github.com/guggla/guggla adresindeki kendi evine taşındı. Şu anda Scala 2.9'da bulunuyor, ancak 2.9.1 ile çalışması çok zor olmamalı. Daha fazla bilgi için oturum slaytlarım http://people.apache.org/~mduerig/scala4sling/ ve http://people.apache.org/~mduerig/scala4scripting/ – michid
'a bakın. Michid: Mükemmel, bağlantılar için teşekkürler. Daha fazla araştırır. – Raman