2013-11-27 19 views
7

Projelerimi bahar tabanlı ürünlere dönüştürmek istiyorum.Geleneksel java web uygulamasından (web.xml ile) bahar önyüklemesine nasıl geçiş yapılır?

İlk adımım, java web uygulamasını oluşturulmuş bir WAR dosyasından, önyükleme ile çalıştırılan bağımsız bir çalıştırılabilir jar'e dönüştürmektir.

The web.xml file can be found here.

The root-context file can be found here.

bana dönüşümü gerçekleştirmek için bazı kılavuzları vardır umut

Let's take a open source web application example from github.: Vaadin-Spring Web Application

.

I have also submit an issue in the spring-boot project.

cevap

12

Bu uygulama bildiğim kadarıyla söyleyebilirim olarak Spring MVC uygulaması değil - muhtemelen imiş geçirmek için bir çok daha kolay olurdu. Hedef (github sorunu başına), bir yürütülebilir JAR elde etmektir. Temel plan, ilk önce Spring Boot kullanarak bir WAR'a ve sonra bir kez JAR'a geçecek. Oldukça basit bir uygulama bu yüzden gerçekten ihtiyacımız olan tek şey web.xml'a bakmak ve ilgili Spring Boot özelliklerine çevirmektir. Bazı genel kılavuzları:

(örneğin Application adlı bir sınıf olarak) SpringBootServletInitializer genişleterek konuşlandırılabilir bir WAR oluşturmak ve Yay Önyükleme @EnableAutoConfiguration açıklama ekle. Örnek:

@Configuration 
    @EnableAutoConfiguration 
    @ComponentScan 
    public class Application extends SpringBootServletInitializer { 

     @Override 
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
      return application.sources(Application.class); 
     } 

Sonra bir yapılandırmayı ekleyin:

  • tip Servlet veya ServletRegistrationBean bir @Bean bu web.xml

  • A bir <servlet/> ve <servlet-mapping/> kapta fasulyesi sanki bu yükler türünde Filter veya FilterRegistrationBean benzer şekilde davranır (<filter/> gibi ve <filter-mapping/>).

  • bu durumda ApplicationContext bir XML dosyasında köklü, böylece en kolay ilk adım @Import etmektir ki Bahar Application içine. Bu çok basittir, @Bean tanımları olarak birkaç satırda yeniden oluşturulabilir.

  • Statik kaynakları sınıf yolu kök WAR kez

içinde /public (veya /static veya /resources veya /META-INFO/resources) taşınır kurabilen Application, örneğin bir main yöntemi ekleyerek bunu yürütülebilir hale çalışmaktadır

Ayrıca bkz. Getting Started Guide on Converting a JAR to a WAR.

Dediğim gibi, bu özel uygulamadaki en büyük sorun, bir Spring MVC uygulaması olmamasıdır. İrlandalı'nın dediği gibi "Eğer oraya ulaşmak istiyorsam efendim, buradan başlamazdım.""Bu genel olarak ilginç bir sorudur, fakat Spring Spring uygulamasına Spring Spring uygulamasına geçmek isteyen herkese burada genel öneriyi okuyabilir ama belki başka bir yerde başka bir tartışma başlatırsınız.

Neyse, dönüştürme konusunda bir basheyim var Bu özel uygulama (kaynak kod kavanozları güzel olurdu) ve yeni bir şey öğrenirsem bu yanıtı güncelle

+0

Springboot ile bu eğilimin savaştan JAR'a gitmesini bekliyorum. Springboot + gwt ile verimli bir şekilde çalışmamı sağlayacak bir geliştirme dostu pom.xml ayarlamaya çalışmak için çok güzel bir sorun.GWT run iskelesini devre dışı bırakmak ve GWT derlemesi yapıp yapmadıkça, JAR konseptini çalıştırıyorum. META-INF/kaynaklarında kaynakları düzgün bir şekilde çalıştıracak dev zamanı. Ama evet, bazı insanlar JAR'dan SAVAŞ’a daha çok, örneğin uygulama motoru. Ama genel olarak bahar önyükleme bir JAR kadar güzel. – 99Sono

+0

Mutli savaş projesi ne olacak? http://stackoverflow.com/questions/35632394/converting-multi-war-application-to-spring-boot – Yosefki

+0

@ dave-syer, notlar için teşekkürler, bunu çok yararlı buluyorum. Bunun çok eski bir yazı olduğunu biliyorum, geçtiğimiz günlerde Spring Boot'a nispeten istikrarlı bir Non SpringMVC web uygulamasının taşınmasını değerlendirmem istendi. Fikir, otomatik ölçeklendirme ile bulut üzerinde konuşabilmek için yürütülebilir bir jar stiline dönüştürmektir. Bu konuda sizin fikriniz hakkında tavsiyede bulunabilirsiniz, son 3 yılda Spring BOOT'ta değişmiş veya buna karşı etki edebilecek herhangi bir şey değişebilir. – Venkat

İlgili konular