2012-09-18 25 views
5

Ben bir Java EE web uygulamasında bazı dağıtım modeli sorum var http sunucusu ve uygulama sunucusu her ikisini de kullanmak. Şu anda Tomcat 6'daki bir WAR dosyası olarak web uygulamamızı uyguluyoruz. Tüm içerik görüntüler, statik html sayfaları vb. Gibi statik içerikler de dahil olmak üzere WAR dosyasıyla paketlenmiştir. Ancak bu statik içeriği bir HTTP sunucusuna dağıtmak ve uygulama sunucusunu sadece dinamik içeriği almak için kullanmak istiyorum. Bu şeyleri nasıl bölüyorum? Bu türden herhangi bir şey yaptı ve senaryo için iyi bir dağıtım modeli var mı. Yardım takdir edilecektir.Nasıl bir java web uygulaması

2 WAR dosyasını tek bir statik içerik ile yapmak ve WAR sunucusunu HTTP sunucusunda ve geri kalanını da farklı bir WAR dosyası olarak dağıtmak ve Application sunucusuna dağıtmak iyi bir fikir midir? Ancak bu yaklaşım, statik içeriğin şu anda atıfta bulunduğu tüm sayfalar üzerinde etkili olacaktır ve projemiz Büyük olduğundan ve kod esaslı çok büyük olduğundan, çok hantal bir kod değişikliği gerektirmektedir.

Herhangi strateji ve fikirler bekliyoruz.

+0

Neden statik ve dinamik içeriği ayırmak istiyorsunuz? Organizasyonel bir bakış mı yoksa performansı arttırmak mı istiyorsunuz? –

+0

Yorumlar için teşekkürler ve her birinin yorumlarını takdir ediyorum. Benim için güzel öğrenme eğrisi. Web uygulamamın performansını artırmak için hem HTTP sunucusu hem de Uygulama sunucusu kullanmak istiyorum. Bir süredir "Java ™ Web Siteleri için Performans Analizi" adlı bir kitap okuyordum. Ve benim statik içeriğimi HTTP sunucusunda ve Uygulama sunucusundaki Dinamik içerikte koymamı tavsiye ediyor. Ama bunu pratik olarak nasıl yapacağımı bilmiyorum. Tek bildiğim, dağıtım için kullandığımız bir Uygulama sunucusu olan Tomcat'a nasıl bir WAR dosyası oluşturup dağıtılacağıdır. –

+0

Yani sorum şu şekilde değiştirilebilir. Statik içeriğimi bir HTTP sunucusuna nasıl dağıtabilirim? Bu konuda biraz yardım alırsam, devam edip tüm statik içeriğimi WAR dosyasından kaldırabilir ve HTTP sunucusunda ve WAR içindeki dosyaların geri kalanını Uygulama sunucusunda dağıtabilirim. –

cevap

1

Bu performans nedenleriyle yapmak ilginç bir şey olabilir.

Bunu yapmak için ayrı dağıtım komut dosyaları/dağıtım dosyaları olmalıdır. Tek bir projeye dağıtmak için birden fazla dosya/WAR/klasör/komut dosyası olması bir sorun değildir. WAR'nuzu dağıtmanız ve veritabanınızı güncellemeniz gerektiğinde aynı şeyimiz var.

Bir WAR dosyası ve dağıtmak için statik içeriğinizin bulunduğu bir klasör olurdu. Bir HTTP sunucusu statik içerik dağıtma


Düzenleme

sunucusuna bağlıdır. Bir Linux sunucusunda Apache kullanmak istiyorsanız, bir Virtual Host kurmak zorundasınız. Bu örnekte

<VirtualHost *:80> 
    # This first-listed virtual host is also the default for *:80 
    ServerName www.example.com 
    DocumentRoot /www/domain 
</VirtualHost> 

, herhangi bir IP adresi için ve sunucu adı www.example.com için, 80 bağlantı noktasını dinleyen bir sanal konak var. Daha sonra bu /www/domain yoluna yönlendirilir.

Dokümanlarda daha fazla örnek ve yapılandırma seçeneği bulacaksınız.

+0

Statik içeriğimi bir HTTP sunucusuna nasıl dağıtabilirim? Bu konuda biraz yardım alırsam, devam edip tüm statik içeriğimi WAR dosyasından kaldırabilir ve HTTP sunucusunda ve WAR içindeki dosyaların geri kalanını Uygulama sunucusunda dağıtabilirim. –

0

WAR dosyasını HTTP sunucusuna dağıtamazsınız. Bir WAR bu uygulama sunucusu ya da sunucu kap içine dağıtılması gerekir Java internet uygulamaları (Tomcat gibi) için kullanılmaktadır. Statik içeriği ayrı bir web uygulamasında ayırmanın iyi bir fikir olduğunu düşünmüyorum. bu bir projedir Eğer yanında bir web uygulaması, olmalıdır:

bir WAR dosyası vb JSP sayfaları, Java servlet, Java sınıfları, HTML sayfaları ek olarak özel dosyaları özel klasör yapısı vardır ve içerdiği Birleştirilmiş bir Web Uygulaması oluşturur.

Statik içeriğinizi tek bir uygulamada tutabilirsiniz ve bununla ilgili kötü bir şey yoktur.

Projeniz çok büyük ve çok fazla dosya içeriyorsa sorun değil, yalnızca proje yapısını kullanmanız, kolayca anlaşılabilir ve okunabilir olması ve uygulama sunucusu veya sunucu konteynerinin dikkat etmesi gerekir. olduğu kadar çok içerik dağıtımı.

+0

Girdilerinizi takdir ediyorum ... Ama benim şartım, web uygulamamın performansını artırmak için statik içeriğimi bir HTTP sunucusuna dağıtmak. HTTP sunucusundaki statik içeriği nasıl paketleyip dağıtacağımı ve bir Tomcat kapsayıcısında dağıtılan bir WAR dosyasındaki JSP'lerden nasıl erişileceğinden emin değilim. Bu konuda herhangi bir yardım harika olacak ... –

0

Sürüm 4'e kadar, Tomcat statik içerik sunmada oldukça yavaş olmuştur. Bu nedenle, dinamik içeriği statik içerikten ayırmak ve normal bir web sunucusu (ikincisini 2002 yılında yayınladığınız kitap) kullanarak sunmanız önerilir. Son zamanlarda Tomcat versiyonları bu problemle karşı karşıya kalmıyor, böylelikle IMHO, hem organizasyon hem de güvenlik için bir kâbus olabilir.

Statik kaynaklar için, uygun önbelleğe almayı yapılandırmaya odaklanabilirsiniz; bu nedenle, gerektiğinden daha fazla aktarılmayacaktır.

+0

Evet Önbellek, ben de bakmak istediğim bir alan. Aslında, sıkça kullanılan ana tablolarla ilgili sorguları ve bunlara yönelik bazı önbelleğe alma yaklaşımlarını incelemeye başladık. Bir yaklaşım, web uygulama başlangıç ​​zamanı sırasında bu sorguların belleğe alınma sonuçlarını yüklemek ve kullanmaktır. Bir sorun, ana tablo verileri değiştiğinde bellek içi şeyleri yenilemektir ... Ancak, bu önbelleğe alma sorununa ayrı ayrı bakacağız ... sadece bu yönüne baktığımızı da paylaşmak istedim ... –

+0

Db'den veri önbelleğe alma farklı bir sorundur - Web sunucusunda statik kaynaklar için önbellek başlıkları ayarlamayı kastediyorum, böylece tarayıcılar yalnızca bir kez alır. –

İlgili konular