3º resumo do livro .

                                              35 á 44       

Esse problema é muito mais grave do que aparenta; o tipo de erro que pode surgir é de difícil interpretação.

O menor dos problemas seria ter o comportamento da versão antiga do Hibernate.

 Mais grave é quando há métodos novos no JAR mais recente; a interface Session do Hibernate antigo seria carregada, e quando sua aplicação APP-nova invocar um método que só existe na versão nova, NoSuchMethod Error será lançado! Isso causa uma enorme dor de cabeça, pois o desenvolvedor fica confuso ao ver que o código compilou perfeitamente, mas durante a execução a JVM indica que aquele método não existe.

NoSuchMethodError é um forte indicador de que o código foi compilado esperando uma versão diferente de uma biblioteca que a encontrada em tempo de execução, provavelmente por causa de os jars estarem espalhados e compartilhados.

O comportamento da aplicação pode ser mais errático; imagine que a aplicação APP-nova utiliza diretamente uma classe do Hibernate que só existe na versão mais nova, como a TypeResolver. Carregamento de classes e classloader hell Casa do Código Essa confusão é similar ao DLL Hell, frequentemente chamado de Classloader hell na plataforma Java.

Em algumas configurações de classloaders diferentes, que carregam classes de diretórios em comum, pode aparecer um ClassCastException curioso e de difícil discernimento.

Se uma referência a um objeto do tipo Produto for passada como argumento para um método que recebe um objeto também deste tipo, mas esta classe tiver sido carregada por um classloader diferente, a exceção será lançada.

O desenvolvedor ficará confuso ao ver uma ClassCastException em uma invocação de método em que nem mesmo há um casting. Isso acontece porque, como vimos, em tempo de execução a identidade de uma classe não é apenas seu fully qualified name, mas também o classloader que a carregou.

Assim, uma classe com mesmo nome, mas carregada por classloaders diferentes, é outra. Isto é chamado de runtime identity e muito importante para permitir que containers tenham mais de uma versão da mesma classe na memória (como o exemplo das Sessions de diferentes versões do Hibernate.

A arquitetura tradicional dificulta que uma aplicação sobrescreva algum componente do Container classloader, mas esse modelo invertido (padrão no Tomcat, por exemplo) permite esse cenário.

 A ordem de resolução das classes passa a ser: primeiro o Bootstrap, depois as classes da aplicação e depois as compartilhadas do Container.

Criando seu ClassLoader Podemos instanciar a URLClassLoader para carregar classes a partir de um conjunto dado de URLs.

 Isto indica que seu parent classloader será o bootstrap diretamente.

Elas serão carregadas em ambos os casos pelo bootstrap classloader (representado pelo null), pois não há como evitar que esse classloader seja consultado em razão da questão de segurança já discutida.

 Ao remover o null do construtor, o URLClassLoader terá como parent o classloader que carregou o código sendo executado (o Application classloader), fazendo com que o carregamento da classe seja delegado para este, antes de ser tentado pelo nosso URLClassLoader.

Carregamento de classes e classloader hell Casa do Código O parent classloader será sempre consultado antes de o classloader de hierarquia “mais baixa” tentar carregar uma determinada classe.

 Lembre-se de que este é o motivo pelo qual jogar os JARs na variável de ambiente CLASSPATH pode acabar escondendo versões diferentes da mesma classe que estejam ao alcance de classloaders mais “baixos” na hierarquia.

Caso elas fossem incluídas dentro da biblioteca padrão, qualquer outro projeto que necessitasse delas em uma versão diferente (tanto mais atual quanto mais antiga) teria sempre a versão do rt.jar Para contornar o problema, a Sun colocou as classes que seriam do pacote org.apache para dentro de com.sun.org.apache.

Sem dúvida uma maneira deselegante, mas que evitou o problema de versionamento.

Este problema tornou-se ainda mais frequente.

 Nesses dois casos, para contornar o problema, utilizamos o recurso de endorsed JARs.

 Através da linha de comando (-Djava.endorsed.dirs), você especifica diretórios que devem ter prioridade na procura de classes antes que o diretório ext do Java SE seja consultado.

É uma forma de o administrador do sistema dizer que confia em (endossa) determinados JARs. Alguns servidores de aplicação possuem um diretório especial onde você pode jogar os JARs a serem endossados.

É comum aparecerem problemas com OutOfMemoryError, acusando que este espaço se esgotou, dado um número muito grande de classes carregadas.

 Em particular, isso ocorre facilmente depois de alguns hot deploys em um container.

 Toda classe carregada tem uma referência para o seu classloader, assim como todo classloader referencia todas as classes carregadas por ele.

 Isso para que possa devolver sempre a mesma classe no caso de outra invocação subsequente para o mesmo full qualified name, agindo como uma factory que cacheia suas instanciações. Esse relacionamento bidirecional entre Class e ClassLoader faz com que os objetos Class só sejam coletados pelo garbage collector junto com o classloader inteiro e todas as outras classes associadas.

Logo, a única maneira de um objeto Class ser coletado é se todas as referências para todas as classes do seu classloader forem liberadas também.

 Ao realizar o hot deploy de uma aplicação, o próprio container libera as referências das classes antigas, possibilitando a coleta do classloader do contexto.

Isso deveria ser suficiente para que o contexto fosse inteiramente liberado da memória, mas, na prática, outro classloader acima daquele da WebApplication segura referências para classes da aplicação.

O carregamento de um único driver JDBC é capaz de segurar na memória o contexto inteiro de uma aplicação que não é mais necessária.

 Na prática, é quase impossível uma aplicação Java conseguir evitar esses leaks de classloaders, por isso em algum momento surgem os OutOfMemoryError frequentes nos hot deploys, sendo mais um motivo para evitá-los em produção.

Todo o paradigma da orientação a objetos, seus princípios e boas práticas procuram trazer esses benefícios para o design.

 Ao pensar no sistema como um todo, outras questões de mais alto nível surgem, em especial aquelas que tratam da forma como os objetos se relacionam e sua organização dentro e entre sistemas.

Ao relacionar dois objetos distintos, deve-se levar em conta as boas práticas que serão discutidas nesse capítulo, como a diminuição do acoplamento entre objetos.

 Programe voltado à interface, não à implementação ao trabalhar com coleções, escolher a implementação certa para cada caso é uma tarefa difícil.

Cada uma delas, como ArrayList, LinkedList ou HashSet, é melhor 3.1. Programe voltado à interface, não à implementação Casa do Código para resolver determinas categorias de problemas.

 Pode ser muito arriscado escrever todo o código da aplicação dependente de uma decisão antecipada.

 Apesar disso, grande parte dos desenvolvedores opta por sempre utilizar ArrayList desde o início sem critério algum.

O problema em realizar uma mudança como esta, de implementação, é que todo código que usava o retorno do método como ArrayList quebra, mesmo que só usássemos métodos que também existem definidos em HashSet.

Seria preciso alterar todos os lugares que dependem de alguma forma desse método.

Mas sempre há também informações semânticas implícitas na utilização desse método, e que não são expostos através da assinatura.

Um exemplo de acoplamento semântico está em depender da informação de que uma List permite dados duplicados, enquanto um Set garante unicidade dos elementos.

Como problemas no acoplamento sintático são encontrados em tempo de compilação, os semânticos somente o são em execução, daí um motivo da importância de testes que garantam o comportamento esperado.

 Desta forma, alterar a implementação torna-se sempre muito mais custoso, caracterizando o alto acoplamento que tanto se procura evitar.

 Para minimizar esse problema, é possível usar um tipo de retorno de método mais genérico, que contemple diversas implementações possíveis, fazendo com que os usuários do método não dependam em nada de uma implementação específica.

Usar interfaces Java é um grande benefício nestes casos, pois ajuda a garantir que nenhum código dependa de uma implementação específica, pois interfaces não carregam nenhum detalhe de implementação.

A escolha da interface ideal vai depender do que você quer permitir que o código invocador possa utilizar e realizar na referência retornada.

Programe voltado à interface, não à implementação Casa do Código de elementos que essa coleção possui, nem os elementos de maneira aleatória através de um índice.

 Devemos procurar um balanço entre o desacoplamento e a necessidade do nosso código.

 Esta é a ideia do Princípio de Segregação de Interfaces: clientes não devem ser forçados a depender de interfaces que não usam.

Uma implementação de lista, MeuProprioArrayList, feita pelo desenvolvedor é provavelmente mais instável que a interface List, já que as forças que a impedem de mudar são fracas (não há outras classes utilizando essa implementação).

Um comentário em “3º resumo do livro .”

  1. Busry doctor fucks patient at homeSmll milky boobsGallery gaay wrestlingInterracil ranchMassve
    dicks monsterAmateur spiin e-cardsKand lics ms juicyFucked witgh audienceVideos of hardcore wwet lesbian sexTiny teenie lesbian girls havig sexJ loo nudeSantas
    porn galsI love hairy womenEnglisdh porn movieBprr tthe bottom lineJob tiit 2008 jelsoft enterprises ltdCervix wife cock floodedApartment wrestliong nudeNude toons faily
    oodd parrentsString thong micro bikiniHott asian tto
    dateBeatt thst pussy upp videoHow to use a elsctric breast pumpChina girls nudeFilipina datingg
    escortFree bathroom cams seex videosNastyy orgyHardcore
    sezy lati sex galleriesHiry oold ladyBbrother sister sexCiny love pornVntage potterry plantersBest oof the rdheads https://tinyurl.com/yf9qpw54 Post vasectommy
    sprm coujt procedureAsian whipping tubeCollege giirls aand big cocks https://bit.ly/38qJ0wZ Foxxy bfown superheasd sex tape videoBig cock bangFakke nude hillary clinton picfs https://tinyurl.com/yj4w7z8s Nudde spring break photographsStockinbgs xxxx clipsPasswors ffor
    adult weebsites https://bit.ly/3qsiGu7 Free monstdr cock bpowjob cumshot videosMature pusssy sex videoWife mother pprn https://bit.ly/2Gt1rWS How
    to clean breast nipplesMeen kissing nudeSex frde shemales in hd https://bit.ly/2RWCY1V Good olle naked womesNakeed phoo tiger woodss wifeMarure nude free picc
    https://tinyurl.com/y9wch5kl Facizl hair girlsHetro hand jobCautriva nudee https://cutt.ly/KUmXcEK Mom fck son free movie?Playboy sexy
    wives galleriesEmjanuele interracial oft porn video https://cutt.ly/pUnOaDg Wife fantanies sexSexual assault inn women’s prisonsNaksd pholtos
    free kendra https://cutt.ly/OOaK036 Girls posts
    nudeGay men’s phooto sitesTorontfo exotic escolrts https://bit.ly/3wXMBMH Hairy indonesianYoure
    so sexyy songBlack girl catfight gangbang https://bit.ly/3ogoUf5 Girls who lie thbere tits whippedWomqn fighting womann nakedCoatbridge escort
    girls https://bit.ly/3ocCbFx Donaa douga nakedBlack ass fixattions rico strongFreee south indian adult movie online https://bit.ly/3xVro7W Latex venn-diagrammBoobs
    in red deadHotaru por https://bit.ly/3q3qofK Rslan andd ludmila
    teenReall beauty british video nudeVideo of breast
    reduction surgery https://cutt.ly/hURzDbrr In home asin massagePhoto
    andd dick cusackMale cum training https://bit.ly/2T1EwrV Diane rwhm bikiniSt
    thmas viorgin island resortsGay pride washingtns https://cutt.ly/wxWWpDI Older milf’s storiesTausha
    rerdhead taoos nmTeenn fuckeddadys bbest frind https://tinyurl.com/2z3g8ncu Upload my
    cum facialBaang brunette gang interracialBritish condom
    websites https://bit.ly/3dywqwO Escorts raleigh ncSexx in bathroom at redskins gameUk ranny lingerie https://bit.ly/35nLoCv Mariah care nakedFat
    naked femalesAmazing adult locations https://bit.ly/3cfVZmX Grajdma girdle fittng pornParwnt
    teren issuesAnime milf porn sjows https://bit.ly/3pU93ER How tto attract a teen guySmall dichk
    hoyFatt black granny pussy https://bit.ly/37zpzTc Kind of boobsNumber1 german pornRihanna naked ass pics https://bit.ly/33EuAar Hott bkack tranny vidsPorn tube gay photosEsfort tit https://bit.ly/32V0525Beata pornn
    slave picturesMatuee amateur free videosMature women’s sgort hairstyles https://cutt.ly/oUSkLP9 Molly hoilly big aass
    pics100 adulpt cahyt free1997ford ecort rear bumper https://bit.ly/3JSLg12 Free oold japanese pusy
    picturesFree streaming porn directoryStoriees mmale erotica https://bit.ly/3ngBx9B Women masturbation secreatsDeahs
    in asian earthquakes iin 2008British associawtion foor sexual health and hhiv https://cutt.ly/kUsGF7q Vaneessa lae feee pornFree hd
    hhq streaming sexSex boys sydne https://bit.ly/2N34gBo Freee pornography
    siteMeagan ffox free podn videoFaek dixk aand orvette https://bit.ly/3inzGzI Immmobile blowjobDbz sceth porn comicsFree hirsute sweeties humb https://bit.ly/3oinRNT Meagan good boos assTaylor outh colege
    amateur tourWorld aateur boxing championships 2005 https://bit.ly/3cnRxC7 Naked chhics redheads with green eyesScreaming too be fucked
    harderI fucked myy sisters bestfriend https://tinyurl.com/yfzlcqqu Vintage pinkk bathroom sinksGayy
    erotiic christmmas cardsAqua teen hunger force spirit journey foration anniversary torret https://bit.ly/3hbjIrv Poorn thumbs dildosSexy animated mysppace contact tablesPorn mmorplg gsme https://bit.ly/3wKLbFL Crzy place tto
    have sexSeexy tewn starletsHot to usee bujllet adult https://tinyurl.com/euj26dtz Tatiana abrcos nude18 is legawl naked teensKissing the same sex
    but noot ggay https://bit.ly/3qZso7n Lavinia lingeriePinkk die-cut brreast
    cacer ribbonsCluub male maryland steip https://cutt.ly/hUoUQuuy Porrn sife for youhr ipodAmateur secretary tubeLaraa croft erotic photos https://bit.ly/3ypL6ca Brpwn strkped shirt babyLesbian dildo bondageAsian breast fuck https://bit.ly/3gEAIWF Transgendered lesbioan blogAsiann dub foundatipn 19 rebellionsGaay activit humqn righgs https://tinyurl.com/45zahdy6 Cock fight figghting mexico new roosterMaturee hotties
    2008 jelssoft enterprises ltdMiiss teen african american pageant https://bit.ly/3rYffvk Seex bloobersAnelina jopie bikibi photosGirll makes guyy cum fast https://bit.ly/3pzfePt Free live gayFoot ten worshipFree
    hairy jiszm video strip https://bit.ly/3c7ojrO Anal with trouserThumb foefinger stress relieverWhole loot off
    portn https://bit.ly/36xbCEC Amateur thumbnail gallerySoft dogty style sexSex addiicts
    anonymous nashville https://bit.ly/3nerNfT Jeb bondageMega auserman blowjobPorn tarring
    reasl people https://bit.ly/3Epu1Bv Ls touch tgpFacial lotion ffor dry skinHoome rememacies findding out sex off baby https://cutt.ly/dYBfWyt Reuge virgin mary music boxHow too fknd nude photosExmples off mature insuyrance endowmentsMichael chisum seex offenderOf laatex balloonsVenta video pornbo noeliaSick aand twixted pornBddsm
    slave trainkng booksAfternoon delight fuckBig brother german y sexI grabbed
    that sstupid bitch byy herr nappy ass weaveLingerie pokemon 2010jelsoft entterprises
    ltdLoove advice teensExtra big dicks moviesOrgasms without beeing touchedFelony interracial pornAnales ggratis pornLovee tto pplay
    with my breastPenis size alcoholPornn staar ryan starrCity in second sexButtt hok
    with pleasure ballTwo sexy girls kissThe jetsons cartoon pornMilkiing moms
    sexSpank debbie nuwestMeasurement of adul attachmentMcdonalds phone call strip managerPrincess gijves a godly blowjobSoccer galleries pornSpanish bootfy cumCooking
    bonerless turkey brdeast iin brineSoft fucking videoFree
    3d porn movike dumpsFree hairy contsPluss size limgerie lonng gownDo girls like shaved
    pubesSingapore prostityution anal sex2 preggo lesbiansFree clips of tiit suckingFree best tubbe xxxBoody culture lovee man masculinities power ssex transformingHousewife iin moovie nylonns pornTranssexual males aand
    motivationCb hustlersMale wearing only underwear fetishBeautiful asjan she malesHerr fist into tthe boy’sCheerleader
    bootted afer naked picsVifeos porno borrachas

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *