2011-10-14 20 views
10

Java EE için oldukça yeni ve dağıtım sürecinin yavaşlığı ile mücadele ediyor ve yanlış bir şey yapıp yapmadığımı merak ediyorum. Koddaki değişikliklerin hemen gerçekleştiği Django'yla deneyimliyim ve Java EE uygulamalarının yayılımının biraz kafa karıştırıcı olduğu görülüyor - sıcak dağıtımı iddia eden birçok şey var (Glassfish, Eclipse manic hotdeploy, Jetty hotdeploy, JRebel vb.)).Java EE uygulamalarını hemen redeploying

Projem bir Maven projesidir ve dağıtmak için Netbeans kullanıyorum. Sitede İlkbahar, JSF ve Hazırda Bekleme çerçeveleri kullanılıyor.

Netbeans'de, Deploy on Depeat, Kaydetme, aşağıdaki ekran görüntüsüne göre etkinleştiriliyor, ancak/unclicking seçeneğinin benim pom.xml'imden bilgi aldığını iddia ettiğimden dolayı mümkün değil (pompamda böyle bir alan yok) .xml (yalnızca bağımlılıklar)). enter image description here

Şimdi, bazı dosyalarda yapılan değişiklikler hemen etkili görünüyor. Bunlar: - JSF dosyaları - Statik dosyaları

aşağıdaki

değişiklikler konuşlandırılmasını gerektirir: - Herhangi bir XML dosyası - mülkler, bile lokalizasyon özelliklerini dosyaları dosya - olanlara

Değişiklikler beni gerektiren herhangi java dosyasını 'u manuel olarak dağıtmak ve şu anda yalnızca 2-3 sınıfım olsa bile, yalnızca bir kullanıcı sınıfı ve bir yetkilendirme sınıfı olmak üzere redeploying yarım dakika sürer. Proje şu anda sadece girişlere izin veriyor ve buna rağmen derleme birkaç saniye sürüyor; ve konteyner (Glassfish) yaklaşık 600 MB RAM tüketiyor gibi görünüyor ve hatta birkaç dağıtım sonra PermGen hataları verir ve Görev Yöneticisi'ni kullanarak java işlemini öldürmek gerekiyor. (Bunun, her bir yeniden dağıtmadan sonra sızan çöp toplayıcıyla ilgili olduğunu okudum ve bir profil oluşturmak için jhat kullanmıştım, fakat binlerce sınıfın, sınıflarımın, Baharın, Hazırda bekletme sınıflarının bir listesiyle sunulmuştu.)

Jrebel'i de duydum ve çalıştırmayı denedim, ancak Netbeans sürümüyle (7.0) uyumlu olmadığı ve çalıştırıldığı görünse de, herhangi bir java dosyasına yapılan herhangi bir değişikliğin hala bir yeniden dağıtım gerektirdiği görülüyor.

Bu sorunları gidermek için yapabileceğim bir şey var mı, yoksa Java EE'de herhangi bir Java dosyasına yapılan her değişiklikten sonra yaklaşık 1 dakika beklemek normal mi? Bu konu verimliliği önemli ölçüde öldürüyor.

İşte uygulamayı dağıtırken benim GlassFish çıktısı: http://pastebin.com/7FhZ6AVh

cevap

5

buldum inandırıcı ne de resmi ne kaynakları var ama cevabım yok çünkü ben keşfettim iki şey işaret etmek istiyorum.

Netbeans sitesindeki bir Maven projesi için derlemeyi nasıl açacağınızı açıklayan ilk this FAQ. Bu ayarın varsayılan olarak kapalı olduğu ve yalnızca testler için varsayılan olarak açık olduğu anlaşılmaktadır. kolaylık sağlamak için:

yanı ana kaynak yürütülmesi için bu özelliği açmak, proje özellikleri iletişim, Derleme paneline gidin.

ikinci, ve ben oldukça tamamen bu anlamıyorum vurgulamak gerekir, NetBeans bir Web Uygulaması dağıtır iki farklı yolu var gibi görünüyor.ilk yolu elle sunucuya bir .war dosya dağıtma aynı gibi görünen bir yerinde dağıtımıdır. İkinci bunun artan derleme gibi bir şey olursa o uygulama olduğunda sadece değişen dosyaları dağıtma sıcak konuşlanmış demektir bir artımlı dağıtım vardır.

Yerinde dağıtım, projenin içerik menüsünden Run veya Deploy öğesini tıklattığınızda varsayılan dağıtım yöntemi gibi görünüyor. Projeniz zaten dağıtıldığı ve yeniden Run tıklayın (veya Run araç çubuğu düğmesini kullanın) ne zaman artan dağıtım olur.

Netbeans.org web sitesinde resmi bir yayın olmamasına rağmen, NetBeans SSS'nin belirtildiğini belirtmek isterim. Herkes bir SSS oluşturabilir ve bilgiler revizyona tabi olmadan geçerliliğini yitirebilir.

Düzenleme: Biraz düşündükten sonra ben sözde artımlı dağıtım buna artacak bir yayılma yapar ikinci kez Run uygulamanız bu sadece var dağıtımın farklı bir yöntem olmadığını karar verdik.

Düzenleme: Eğer ekran görüntüsünde seçmiş Run panele aksine talimat yukarıdaki Compile panele sizi işaret dikkat edin. İşte benim ekran görüntüsü aşağı Compile paneli açılan for both application and test execution seçmek gerektiğini ve varsayılan for test execution only

0

"Kaydet derleme" olduğunu gösteriyor işleri benim için çok yavaşladı, ancak başka şey bulduk Daha sonra Netbeans'te "Kod Değişiklikleri Uygula" butonu, sadece Debug modunda görünür. (Resimdeki sağdaki yeşil düğme)

Bu, Java kodu değişikliklerini uygulamak için kullanışlıdır; her seferinde çalışmıyor ama değişim yöntemi ekleme değildir ve fasulye isteği kapsamlı ise çoğu zaman çalışır düşünüyorum. Bence Compile on Compre (Manuel Kaydet) seçeneğinin bu olduğunu düşünüyorum, fakat yeniden paylaşımdan daha iyidir.

Apply Code Changes

+0

"Kod Değişikliklerini Uygula", hotswap'dir. Bir sınıf imzasını değiştirirseniz işe yaramaz. – Daniel

2

JRebel (http://plugins.netbeans.org/plugin/22254/jrebel-netbeans-plugin) NetBeans 7.0 ile uyumludur ve aslında orada herhangi IDE ile uyumludur.

1

Bu NetBeans 7.2.1 ve GlassFish 3.1.2 üzerinde JRebel kurma üzerinden yürür NetBeans ekibinden Geertjan Wielenga tarafından büyük bir videodur: NetBeans IDE JRebel Başlarken Nasıl

: http://www.youtube.com/watch?v=kveXKv2q4Ec

İlgili konular