Vra

Jy het dalk 'n stel eienskappe wat op die ontwikkelaarmasjien gebruik word, wat verskil van ontwikkelaar tot ontwikkelaar, nog 'n stel vir 'n opstelomgewing en nog een vir die produksie-omgewing.

In 'n Spring-toepassing kan jy ook bone hê wat jy in 'n plaaslike omgewing wil laai, maar nie in 'n produksie-omgewing nie, en omgekeerd.

Hoe hanteer jy dit?Gebruik jy aparte lêers, mier/maven-hulpbronfiltrering of ander benaderings?

Was dit nuttig?

Oplossing

Ek het net die verskillende eiendomme in JNDI gesit.Op hierdie manier kan elkeen van die bedieners gekonfigureer word en ek kan EEN oorloglêer hê.As die lys van eiendomme groot is, sal ek die eienskappe (of XML) lêers op 'n ander bediener huisves.Ek sal JNDI gebruik om die URL van die lêer om te gebruik te spesifiseer.

As jy verskillende programlêers (oorlog/oor) vir elke omgewing skep, ontplooi jy nie dieselfde oorlog/oor wat jy toets nie.

In een van my toepassings gebruik ons ​​verskeie REST-dienste.Ek het net die root url in JNDI gesit.Dan kan die bediener in elke omgewing gekonfigureer word om met die regte REST-diens vir daardie omgewing te kommunikeer.

Ander wenke

Ek gebruik net verskillende Lente XML konfigurasielêers vir elke masjien, en maak seker dat al die stukkies van opset data wat wissel tussen masjiene is verwys deur bone wat laai van die lente konfigurasielêers.

Byvoorbeeld, ek het 'n webapp wat gekoppel is aan 'n Java RMI koppelvlak van 'n ander app. My program kry die adres van hierdie ander jeug se RMI koppelvlak via 'n boontjie wat is ingestel in die lente XML opstelling lêer. Beide my jeug en die ander artikels het dev, toets, en produksie gevalle, so ek het drie konfigurasielêers vir my app - een wat ooreenstem met die opset geskik is vir die produksie byvoorbeeld een vir die toets byvoorbeeld, en een vir die dev byvoorbeeld.

Dan, die enigste ding wat ek nodig het om reguit te hou is wat konfigurasielêer kry ontplooi waaraan masjien. Tot dusver het ek nog nie enige probleme met die strategie van die skep van Ant take wat hanteer kopiëring van die korrekte opstelling lêer in plek voor te genereer My oorlog lêer het; dus, in die voorbeeld hierbo, ek het drie Ant take, een wat die produksie WAR genereer, een wat die dev WAR genereer, en een wat die toets WAR genereer. Al drie take te hanteer kopiëring van die reg opstelling lêer na die regte plek, en dan bel dieselfde volgende stap, wat die opstel van die jeug en die skep van die oorlog.

Hoop dit maak 'n sekere sin ...

Ons gebruik eiendomslêers spesifiek vir die omgewings en laat die mierbou die korrekte stel kies wanneer die potte/oorloë gebou word.

Omgewingspesifieke dinge kan ook deur die gidsdiens (JNDI) hanteer word, afhangende van jou toepassingbediener.Ons gebruik tomcat en ons DataSource word gedefinieer in Tomcat se leesalleen JNDI-implementering.Lente maak die opsoek baie maklik.

Ons gebruik ook die mierstrategie om verskillende werwe (verskillende inhoud, sekuriteitsrolle, ens.) ook uit dieselfde bronprojek te bou.

Daar is een ding wat ons 'n bietjie probleme met hierdie boustrategie veroorsaak, en dit is dat lêers en gidse dikwels nie bestaan ​​totdat die bou uitgevoer is nie, so dit kan dit moeilik maak om ware integrasietoetse te skryf (met dieselfde veerstel op soos wanneer dit ontplooi is) wat van binne die IDE uitgevoer kan word.Jy mis ook sommige van die IDE se vermoë om te kyk vir die bestaan ​​van lêers, ens.

Ek gebruik Maven te filter die hulpbronne onder src / hoof / hulpbronne in my projek. Ek gebruik dit in kombinasie met eiendom lêers te trek in persoonlike eienskappe in my-lente projekte.

Vir verstek bou, Ek het 'n eiendom lêer in my tuisgids dat Maven dan gebruik as oorheers (so goed soos my plaaslike Tomcat installeer korrek bevind). Toets bediener en produksie bediener is my ander profiele. 'N Eenvoudige -Pproduction is al wat dit dan nodig is om 'n aansoek te bou vir my produksie bediener.

Gebruik verskillende eienskappe lêers en gebruik mier filters wat die vervanging gebaseer op omgewing waarvoor die bou gedoen sal doen vervang. Sien http: //www.devrecipes. com / 2009/08/14 / omgewing-spesifieke-opset-vir-java-programme /

Skei konfigurasielêers, gestoor in die bron beheer repository en bygewerk deur hand. Tipies opset verander nie nie radikaal tussen een weergawe en die volgende so sinchronisasie (selfs met die hand) is nie regtig 'n groot probleem.

Vir hoogs haalbare stelsels in produksie omgewings ek sou ernstig beveel 'n skema waarin konfigurasielêers in templates gehou, en as deel van die bou script van hierdie voorleg word gebruik om "finale" konfigurasielêers te lewer (alle omgewings moet dieselfde proses gebruik).

Ek gebruik onlangs ook Maven vir alternatiewe konfigurasies vir live of stellasies omgewings. Produksie opset met behulp van Maven Profiele . Hoop dit help.

Ek gebruik kopie mier se met 'n filter lêer. In die gids met die opstelling lêer met veranderlikes Ek het 'n gids met 'n lêer vir elke omgewing. Die bou script weet die env en gebruik die korrekte veranderlike lêer.

Ek het ander opset dopgehou hou die konfigurasies vir die teiken ontplooiing, en ek gebruik ANT om die een om te gebruik tydens die lêer kopieer stadium kies.

Ons gebruik verskillende mier teikens vir verskillende omgewings. Die manier waarop ons doen dit dalk 'n bietjie onelegant maar dit werk. Ons sal net vertel sekere mier teikens te filter verskillende hulpbron lêers (dit is hoe jy sekere bone uit gelaai kon uitsluit), laai verskillende databasis eienskappe, en verskillende saad data te laai in die databasis. Ons het nie regtig 'n mier 'n kenner 'rondhardloop, maar ons is in staat om uit te voer ons bou met verskillende konfigurasies van 'n enkele opdrag.

Een oplossing wat ek gesien het wat gebruik is om die aanbieding omgewing instel sodat dit is identies aan die produksie-omgewing. Dit beteken elke omgewing het 'n VLAN met dieselfde IP reeks, en masjien rolle op dieselfde IP-adresse (bv die db cluster IP altyd 192.168.1.101 in elke omgewing). Die firewalls gekarteer eksterne die gesig staar adresse aan die web-bedieners, so deur die uitruiling gasheer lêers op jou rekenaar dieselfde adres gebruik kan word - http://www.myapp.com/webapp/file.jsp sou gaan om óf stellasies of produksie, afhangende van watter hosts lêer wat jy in het omgeruil.

Ek is nie seker dit is 'n ideale oplossing, dit is nogal fiddly om in stand te hou, maar dit is 'n interessante een om daarop te let.

Kaleb P en JeeBee het waarskynlik jou vinnigste oplossing. Plus jy hoef nie vir die opstel van verskillende dienste of punt om lêers op verskillende masjiene. Jy kan jou omgewing spesifiseer óf deur die gebruik van 'n $ {user.name} veranderlike of deur spesifisering die profiel in 'n -D argument vir Ant of Maven.

Verder in hierdie opstel, kan jy 'n generiese eienskappe in te dien, en oorheersende eienskappe lêers vir die spesifieke omgewings. Beide Ant en Maven ondersteun hierdie vermoëns.

Moenie vergeet om PropertyPlaceholderConfigurer ondersoek - dit is veral nuttig in omgewings waar JNDI is nie beskikbaar

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top