Home

Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usuário do

image

Contents

1. lt bean gt lt deployment gt As duas partes importantes para assistir este arquivo s o PojoModule e GuiceKernelRegistryEntryPlugin O PojoModule configura seus beans conforme o Exemplo 6 5 Configura o dos Beans para Guice public class PojoModule extends AbstractModule private Controller controller Constructor public PojoModule Inject bean KernelConstants KERNEL CONTROLLER NAME Controller controller this controller controller protected void configure bind Controller class toInstance controller bind IPojo class to Pojo class in Scopes SINGLETON bind IPojo class annotatedwith FromMC class toProvider GuiceIntegration fromMicrocontainer IPojo class PlainPojo 50 Cap tulo 6 Modelos de Componentes Exemplo 6 6 Integra o do Guice com o Microcontainer public class GuiceKernelRegistryEntryPlugin implements KernelRegistryPlugin private Injector injector public GuiceKernelRegistryEntryPlugin Module modules injector Guice createInjector modules public void destroy injector null public KernelRegistryEntry getEntry Object name KernelRegistryEntry entry null try if name instanceof Class lt gt Class lt gt clazz Class lt gt name entry new AbstractKernelRegistryEntry name injector getInstance clazz else if name instanceof Key Key lt gt key Key lt gt name entry new AbstractKernelRegist
2. LY redhat Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer para uso com a Plataforma do Aplicativo do JBoss Enterprise Edi o 5 1 0 Mark Newton Ale Justin Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer para uso com a Plataforma do Aplicativo do JBoss Enterprise Edi o 5 1 0 Mark Newton Red Hat mark newton jboss org Ales Justin Red Hat ajustin redhat com Editado por Misty Stanley Jones Red Hat misty redhat com Nota Legal Copyright O 2011 Red Hat Inc This document is licensed by Red Hat under the Creative Commons Attribution ShareAlike 3 0 Unported License If you distribute this document or a modified version of it you must provide attribution to Red Hat Inc and provide a link to the original If the document is modified all Red Hat trademarks must be removed Red Hat as the licensor of this document waives the right to enforce and agrees not to assert Section 4d of CC BY SA to the fullest extent permitted by applicable law Red Hat Red Hat Enterprise Linux the Shadowman logo JBoss MetaMatrix Fedora the Infinity Logo and RHCE are trademarks of Red Hat Inc registered in the United States and other countries Linux is the registered trademark of Linus Torvalds in the United States and other countries Java is a registered trademark of Oracle and or its affiliates XFS is a trademark of Silicon Graphics
3. o a respeito de um recurso particular que pode ser um arquivo um diret rio ou no caso de um JAR um URL remoto Outro problema de duplica o o c digo ilustra este problema 71 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 8 1 Problema de Duplica o de Recurso 72 Cap tulo 8 Sistema de Arquivo Virtual public static URL search ClassLoader cl String prefix String suffix throws IOException Enumeration e new Enumeration cl getResources prefix cl getResources prefix MANIFEST MF Set all new LinkedHashSet URL url URLConnection conn JarFile jarFile for int i 0 s e length i lt s i while e i hasMoreElements url URL e i nextElement conn url openConnection conn setUseCaches false conn setDefaultUseCaches false if conn instanceof JarURLConnection jarFile JarURLConnection conn getJarFile else jarFile getAlternativeJarFile url if jarFile null searchJar cl all jarFile prefix suffix else o Tt SS amp amp S i gs boolean searchDone searchDir all new File URLDecoder decode url getFile UTF 8 suffix if searchDone false i 3 J J J searchFromURL all prefix suffix url return URL all toArray new URL all size private static boolean searchDir Set result File file String suffix throws IOException if file exists amp amp
4. throws IllegalStateException if the file is closed ay long getLastModified throws IOException TES Returns true if the file has been modified since this method was last called Last modified time is initialized at handler instantiation return true if modifed false otherwise throws IOException for any error Cap tulo 8 Sistema de Arquivo Virtual EA boolean hasBeenModified throws IOException TES Gef the Size return the size throws IOException for any problem accessing the virtual file system throws IllegalStateException if the file is closed ae long getSize throws IOException A Tests whether the underlying implementation file still exists return true if the file exists false otherwise throws IOException thrown on failure to detect existence wee boolean exists throws IOException Whether it is a simple leaf of the VFS i e whether it can contain other files return true if a simple file throws IOException for any problem accessing the virtual file system throws IllegalStateException if the file is closed te Pee Ree O E E 5 boolean isLeaf throws IOException A Is the file archive return true if archive false otherwise throws IOException for any error gd boolean isArchive throws IOException Whether it is hidden A return true when hidden throws IOException for any problem accessing the virtual file system throws IllegalSta
5. Desimplante o servi o usando a op o u e perceba que ele inacess vel Em seguida realize algumas altera es e implante a novamente usando a op o d Imprima o status novamente usando a op o p O cliente est acessando a nova configura o do servi o O bus mais lento que o acesso direto uma vez que o bus usa a reflex o para cnamar as inst ncias do bean O benef cio desta abordagem que apenas o bus possui refer ncias s inst ncias de bean Quando um servi o for reimplantado todas as refer ncias existentes podem ser esvaziadas e substitu das por novas refer ncias Desta maneira um servi o pode ser seguramente reimplantado no per odo de execu o Os Servi os que n o s o usados com muita frequ ncia ou que s o espec ficos para certos aplicativos s o bons candidatos para o acesso indireto usando o bus Microcontainer A redu o do desempenho balanceada pela flexibilidade que ele proporciona 4 5 Classloading Din mico At agora voc utilizou os classloaders do aplicativo e extens o para carregar todas as classes no aplicativo A classpath do aplicativo determinada pelo script run sh usando o aviso cp para inclus o do diret rio atual e client 1 0 0 jar conforme apresentado abaixo java Djava ext dirs pwd lib cp client 1 0 0 jar org jboss example client Client 1 Os JARs no diret rio Lib foram adicionados ao class path do classloader de extens o usando a propriedade do sistema java
6. a classe HRManager possui um m todo setHir ingFreeze boolean hiringFreeze ea classe AgeBasedSalaryStrategy possui os m todos setMinSalary int minSalary e setMaxSalary int maxSalary Os valores no descritor da implanta o s o convertidos de sequ ncias para tipos relevantes boolean int etc pelo JavaBean PropertyEditors Muitos PropertyEditors s o fornecidos por padr o pelos tipos padr es mas voc pode criar seu pr prio caso ache necess rio Consulte o cap tulo Propriedades na Parte II POJO Development para maiores detalhes 3 5 2 Testando o Servi o Ap s ter criado seus POJOs e conect los para formarem servi os voc precisar test los O JBoss Microcontainer permite a unidade de teste individual dos POJOs assim como os servi os atrav s do uso de uma classe MicrocontainerTest Aclasse org jboss test kernel junit MicrocontainerTest herda do junit framework TestCase configurando cada teste pelo bootstrapping JBoss Microcontainer e adicionando um BasicXMLDeployer Depois ela busca o classpath para um descritor de implanta o 20 Cap tulo 3 Servi os de Constru o XML com o mesmo nome como classe de teste finalizando em xm1 e residindo numa estrutura de diret rio representando o nome do pacote da classe Quaisquer beans encontrados neste arquivo s o implantados e podem ent o ser acessados usando o m todo convencional chamado getBean String name Exemplo 3 1 Listagem do Diret rio src tes
7. es na configura o usando o arquivo jboss beans xm1 salve o arquivo e implante novamente usando a op o d A impress o do servi o usando a op o p 30 Cap tulo 4 Uso de Servi os apresentar que o cliente continua acessando a inst ncia inicial do servi o que foi implantado Mesmo que voc modifique o cliente para buscar uma nova refer ncia toda vez em que o servi o for reimplantado novos desenvolvedores podem distribuir c pias desta refer ncia aos objetos por equ voco Caso todas estas refer ncias n o forem esvaziadas durante a reimplanta o o mesmo problema de cache poder ocorrer Para reimplantar o servi o reconfigurado com confian a encerre o aplicativo por completo usando a op o q e reinicie a usando o script run sh Este um comportamento perfeitamente aceit vel para os servi os empresariais tais como Transactions Messaging e Persistence uma vez que eles sempre est o em uso Eles n o podem ser reimplantados no per odo de execu o e tamb m aproveitam o alto desempenho gerado pelo uso de acesso direto Caso seu servi o falhar se encaixar em uma dessas categorias considere o acesso direto atrav s do controlador Microcontainer 4 4 Acesso Indireto O script run sh pode ser chamado com um bus de par metro opcional que leva a chamadas aos Recursos Humanos para uso com o bus do Microcontainer Ao inv s de usar uma refer ncia direta inst ncia de bean obtida do controlador do Microconta
8. o Microcontainer tamb m suporta outros casos de uso avan ados O primeiro o Assembled que parecido ao que o Eclipse chama de Linked Resources Seu prop sito obter recursos existentes de rvores diferentes e simul los em rvores de recurso nico 83 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 8 6 Implementa o dos VirtualFileHandlers Montados AssembledDirectory sar AssembledContextFactory getInstance create assembled sar URL url getResource vfs test jari jar VirtualFile jari VFS getRoot url sar addChild jar1 url getResource tmp app ext jar VirtualFile ext1 VFS getRoot url sar addChild ext AssembledDirectory metainf sar mkdir META INF url getResource config jboss service xml VirtualFile serviceVF VFS getRoot url metainf addChild servicevF AssembledDirectory app sar mkdir app jar url getResource app someapp classes VirtualFile appVF VFS getRoot url app addPath appVF new SuffixFilter class Outra implementa o dos arquivos in memory Esta implementa o nasceu da necessidade de manusear facilmente os bytes gerados pelo AOP Ao inv s de usar os arquivos tempor rios voc pode soltar bytes no VirtualFileHandlers em mem ria Exemplo 8 7 Implementa o dos VirtualFileHandlers em mem ria URL url new URL vfsmemory aopdomain org acme test Test class byte byte
9. que descreve seu estilo de Spring do bean O Microcontainer implanta os beans ao inv s da no o da f brica bean do Spring Exemplo 6 3 Uso do Spring com o Microcontainer public class Pojo extends AbstractPojo implements BeanNameAware private String beanName public void setBeanName String name beanName name J public String getBeanName return beanName public void start if SpringPojo equals getBeanName false throw new IllegalArgumentException Name doesn t match getBeanName Mesmo que o SpringPojo bean possua depend ncia na biblioteca do Spring causada pela implanta o da interface BeanNameAware seu nico prop sito expor e similar alguns do comportamento do retorno de chamada do Spring 6 4 Uso do Guice com o Microcontainer O objetivo do Guice um tipo de combina o Os Guice beans s o gerados e configurados usando M dulos 49 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 6 4 Descritor de implanta o para Integra o do Guice no Microcontainer lt deployment xmins urn jboss bean deployer 2 0 gt lt bean name GuicePlugin class org jboss guice spi GuiceKernelRegistryEntryPlugin gt lt constructor gt lt parameter gt lt array elementClass com google inject Module gt lt bean class org jboss demos models guice PojoModule gt lt array gt lt parameter gt lt constructor gt
10. return the attributes EA VisitorAttributes getAttributes DES Visit a virtual file param virtualFile the virtual file being visited RA void visit VirtualFile virtualFile VirtualFile root get root VirtualFileVisitor visitor new SuffixVisitor class get all classes root visit visitor 8 2 Arquitetura VFS Embora o API p blico seja bastante intuitivo os detalhes de implanta o real adicionam complexidade Alguns conceitos precisam ser explicados em maiores detalhes Toda vez que voc cria uma inst ncia VFS sua inst ncia de combina o VFSContext criada A cria o feita atrav s do VFSContextFactory Protocolos diferentes mapeiam inst ncias VFSContextFactory diferentes por exemplo o file vfsfile mapeia para o FileSystemContextFactory enquanto o zip vfszip mapeia para o ZipEntryContextFactory Toda vez que uma inst ncia Vir tualFile criada sua combina o VirtualFileHandler criada Esta inst ncia VirtualFileHandler sabe como manusear diferentes tipos de recursos apropriados O VirtualFile API apenas delega invoca es para a pr pria refer ncia VirtualFileHandler A inst ncia VFSContext sabe como criar as int ncias VirtualFileHandler de acordo com o tipo de recurso Por exemplo o ZipEntryContextFactory cria o ZipEntryContext que cria o ZipEntryHandler 8 3 Implanta es Existentes A partir dos arquivos diret rios FileHandler e arquivos ZipEntryHandler
11. uma inst ncia de nosso aspect chamado AuditAs pect criada usando o elemento lt aop aspect gt Isto parecido com o elemento lt bean gt uma vez que os atributos name e class s o usados da mesma maneira No entanto este processo possui tamb m os atributos method e pointcut que voc pode usar para aplicar ou bind um advice com o aspect de auditoria para todos os construtores de m todos da classe HRManager Apenas o m todo audit precisa ser especificado uma vez que ele sobrecarregado com a classe AuditAspect de par metros diferentes O JBoss AOP sabe o que selecionar no per odo de execu o dependendo se um construtor ou uma invoca o de m todo s o realizados Esta configura o adicional tudo o que necess rio para aplicar o aspect de auditoria no per odo de execu o adicionando o comportamento de auditoria ao servi o Human Resources Voc pode testar este procedimento rodando o cliente usando o script run sh Um diret rio log criado na inicializa o juntamente com o diret rio 1ib quando o AuditAspect bean criado pelo Microcontainer Cada implementa o do servi o de Recursos Humanos leva um novo arquivo log a aparecer com o diret rio log O arquivo log cont m uma grava o de quaisquer chamadas realizadas do cliente ao servi o Isto Exemplo 5 4 Amostra do Resultado Log AOP Method getEmployees Return Method addEmployee Args Santa Claus 1 Reindeer Avenue Lapland City 25 12 1860 Retur
12. A Camada ClassLoading Exemplo 9 12 Importa o e Exporta es de Bibliotecas e M dulos completos ao inv s de Pacotes de granula o fina lt classloading xmlns urn jboss classloading 1 0 gt lt requirements gt lt module name jboss reflect jar gt lt requirements gt lt capabilities gt lt module name jboss cache jar gt lt capabilities gt lt classloading gt lt classloading xmlns urn jboss classloading 1 0 gt lt requirements gt lt package name si acme foobar gt lt module name jboss reflect jar gt lt requirements gt lt capabilities gt lt package name org alesj cl gt lt module name jboss cache jar gt lt capabilities gt lt classloading gt Voc pode misturar os tipos de solicita o e capacidades usando os pacotes e m dulos O sub projeto do classloading usa uma implanta o padr o pequena recurso visitante No projeto ClassLoader a conex o entre a implanta o e o classloading feita atrav s da classe Module que mant m toda a informa o para aplicar restri es apropriadamente no padr o do visitante tal como filtramento 97 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 9 13 Interfaces ResourceVisitor e ResourceContext public interface ResourceVisitor ResourceFilter getFilter void visit ResourceContext resource J public interface ResourceContext URL getUrl ClassLoader getClassLoad
13. International Corp or its subsidiaries in the United States and or other countries MySQL is a registered trademark of MySQL AB in the United States the European Union and other countries Node js is an official trademark of Joyent Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node js open source or commercial project The OpenStack Word Mark and OpenStack Logo are either registered trademarks service marks or trademarks service marks of the OpenStack Foundation in the United States and other countries and are used with the OpenStack Foundation s permission We are not affiliated with endorsed or sponsored by the OpenStack Foundation or the OpenStack community All other trademarks are the property of their respective owners Resumo Este guia direcionado para desenvolvedores do Java que desejam usar o JBoss Microcontainer para implantar ambientes modulares e personalizados do Java em seus aplicativos ndice Pref cio AE E A E niet eres Rec cai O at o aa do DC DERA DO het AL Seed E EE ee det BSD Ap nei 1 Conven es de Documentos 1 1 Conven es Tipogr ficas 1 2 Conven es de Pull Quote 1 3 Notas e Avisos 2 Obtendo Ajuda e Fornecendo Coment rios 2 1 Voc precisa de ajuda 2 2 N s precisamos do seu Coment rio Parte I Introdu o ao Microcontainer Guia Tutorial 00 00 cece eae Capitulo 1 Pr requesitos para uso deste Guia c
14. JBoss Microcontainer Exemplo 4 3 Listagem do Diret rio client pojo client 1 0 0 jar jboss beans xml lib concurrent 1 3 4 jar humanResourcesService 1 0 0 jar jboss common core 2 0 4 GA jar jboss common core 2 2 1 GA jar jboss common logging 1094j 2 0 4 GA jar jboss common logging spi 2 0 4 GA jar jboss container 2 0 0 Beta6 jar jboss dependency 2 0 0 Beta6 jar jboss kernel 2 0 0 Beta6 jar jbossxb 2 0 0 CR4 jar log4j 1 2 14 jar xercesImp1 2 7 1 jar run sh Exemplo 4 4 Tela do Menu HRManager Menu d Implanta o servi o de Recursos Humanos u Desimplanta o servi o de Recursos Humanos a Adiciona funcion rio 1 Lista funcion rios r Remove funcion rio g Obt m o sal rio s Determina o sal rio t Ativa Desativa o congelamento oculto m Menu de exibi o p Imprime o status do servi o q Encerra Para selecionar uma op o entre a letra apresentada no lado esquerdo e pressione RETURN Por exemplo para exibir as op es do menu entre m seguido de RETURN A inser o de mais de uma letra ou de uma op o resulta numa mensagem de erro 26 Cap tulo 4 Uso de Servi os Or importante importante O script run sh configura o ambiente de per odo de rodagem pela adi o de todos os JARs no diret rio Lib para o classpath usando a propriedade de sistema java ext dirs Ele tamb m adiciona o diret rio atual e o client 1 0 0 jar usando o aviso cp de
15. boolean isBlackListable public abstract URL getResource String path public InputStream getResourceAsStream String path public abstract void getResources String name Set lt URL gt urls throws IOException protected ProtectionDomain getProtectionDomain String className String path public PackageInformation getPackageInformation String packageName public PackageInformation getClassPackageInformation String className String packageName protected ClassLoader isJDKRequest String name Segue abaixo dois exemplos do ClassLoaderPolicy O primeiro restaura os recursos baseados em express es regulares enquanto que o segundo manuseia os recursos encriptados 87 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 9 2 ClassLoaderPolicy com o Suporte de Express o Regular 88 Cap tulo 9 A Camada ClassLoading public class RegexpClassLoaderPolicy extends ClassLoaderPolicy private VirtualFile roots private String packageNames public RegexpClassLoaderPolicy VirtualFile roots this roots roots Override public String getPackageNames if packageNames null Set lt String gt exportedPackages PackageVisitor determineAllPackages roots null ExportAl1 NON_EMPTY null null null packageNames exportedPackages toArray new String exportedPackages size return packageNames protected Pattern createPattern String regexp
16. boolean outside true StringBuilder builder new StringBuilder for int i 0 i lt regexp length i char ch regexp charAt i if ch ch ch amp amp escaped regexp i false switch ch case outside false break case outside true break case if outside builder append break builder append ch return Pattern compile builder toString protected boolean escaped String regexp int i return i gt 0 amp amp regexp charAt i 1 public URL getResource String path Pattern pattern createPattern path for VirtualFile root roots URL url findURL root root pattern if url null return url return null 89 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer private URL findURL VirtualFile root VirtualFile file Pattern pattern try String path AbstractStructureDeployer getRelativePath root file Matcher matcher pattern matcher path if matcher matches return file toURL List lt VirtualFile gt children file getChildren for VirtualFile child children URL url findURL root child pattern if url null return url return null catch Exception e throw new RuntimeException e public void getResources String name Set lt URL gt urls throws IOException Pattern pattern c
17. demos models jmx Pojo gt lt bean name AnnotatedExposePojo class org jboss demos models jmx ExposePojo gt lt constructor gt lt parameter gt lt inject bean ExposedPojo gt lt parameter gt lt constructor gt lt bean gt lt deployment gt O descritor exp e um POJO existente como um MBean e o registra num servidor MBean Para expor o POJO como um MBean finalize o com uma anota o JMX assumindo que voc importou o org jboss aop microcontainer aspects jmx JMX O Bean pode tanto expor isto diretamente ou em sua pr pria propriedade 52 Cap tulo 6 Modelos de Componentes Exemplo 6 9 Exposi o de um POJO como um MBean usando s pr pria Propriedade lt deployment xmlns urn jboss bean deployer 2 0 gt lt bean name XMLLoginConfig class org jboss demos models old XMLLoginConfig gt lt bean name SecurityConfig class org jboss demos models old SecurityConfig gt lt property name defaultLoginConfig gt lt inject bean XMLLoginConfig gt lt property gt lt bean gt lt bean name SecurityChecker class org jboss demos models old Checker gt lt property name loginConfig gt lt inject bean jboss security service XMLLoginConfig gt lt property gt lt property name securityConfig gt lt inject bean jboss security service SecurityConfig gt lt property gt lt bean gt lt deployment gt Voc pode usar qualquer um dos tipos de pesquisa de inje o tanto pela p
18. encapsulamento e composi o para facilitar a manuten o dos cross cutting concerns Os aspectos s o aplicados ao c digo usando uma linguagem de express o que o permite especificar quais construtores m todos e ainda campos a destinar Voc pode alterar rapidamente este comportamento das classes m ltiplas pela edi o do arquivo de configura o Este cap tulo cont m exemplos que demonstram como usar o JBoss AOP juntamente como o Microcontainer para criar e aplicar um aspecto de auditoria ao Servi o de Recursos Humanos O c digo de auditoria pode ser substitu do pela classe HRManager no entanto isto aplicaria o clutter na classe com o c digo que n o relevante a seu prop sito central expandindo o e dificultando sua opera o Este design do aspect fornece modularidade facilitando a auditoria em outra classe futuramente caso o escopo do projeto mudar O AOP pode ser usado tamb m para aplicar um comportamento adicional durante a fase de implanta o Esta amostra criar e efetuar o bind num proxy para uma inst ncia de bean no servi o JNDI b sico permitindo que seja acessado usando uma busca JNDI ao inv s de um controlador Microcontainer 5 1 Criando um Aspect O diret rio examples User Guide gettingStarted auditAspect cont m todos os arquivos necess rios para criar o aspect pom xml src main java org jboss example aspect AuditAspect java 37 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do
19. ext dirs ao inv s da listagem do caminho completo para cada um dos JARs ap s o aviso cp Uma vez que a extens o classloader o pai do aplicativo classloader as classes do cliente est o aptas a encontrar todas as classes do Microcontainer e classes dos Recursos Humanos no per odo de execu o A partir da vers o 6 do Java e mais avan adas voc pode usar um curinga para incluir todos os JARs num diret rio como aviso cp java cp pwd lib client 1 0 0 jar org jboss example client Client 1 n t n Todas as classes no aplicativo ser o adicionadas ao classpath do aplicativo e o classpath do classloader de extens o manter os pr prios valores padr es O que acontece caso voc precise de um servi o adicional no per odo de execu o Caso o novo servi o de execu o seja empacotado num arquivo JAR ele deve ser vis vel ao classloader antes que suas classes possam ser carregadas Uma vez que voc j tenha determinado o classpath para o classloader do aplicativo e classloader de extens o na inicializa o n o ser necess rio adicionar o URL ao JAR A mesma situa o v lida caso as classes do servi o forem contidas numa estrutura do diret rio As classes n o ser o encontradas no classloader do aplicativo a n o ser que o diret rio de n vel superior esteja localizado no diret rio atual que est na classpath do aplicativo e ent o as classes n o ser o encontradas pelo classloader do aplicativo Caso voc
20. forma que o descritor de implanta o jboss beans xm1 pode ser encontrado no per odo de execu o juntamente coma classe org jboss example client Client que chamada no in cio do aplicativo 4 1 Aplicando o Bootstrapping ao Microcontainer Antes de usar o cliente para implementar e cnamar seu servi o observe com aten o no que acontece durante a constru o public Client final boolean useBus throws Exception this useBus useBus ClassLoader cl Thread currentThread getContextClassLoader url cl getResource jboss beans xm1 Start JBoss Microcontainer bootstrap new EmbeddedBootstrap bootstrap run kernel bootstrap getKernel controller kernel getController bus kernel getBus Primeiramente um URL representando o descritor de implanta o jboss beans xml criado Isto mais tarde solicitado de forma que o implantador XML pode implantar e desimplantar beans declarados no arquivo O m todo getResource do classloader do aplicativo usado uma vez que o arquivo jboss beans xm1 est inclu do no classpath Isto opcional o nome e localiza o do descritor de implanta o n o s o importantes contanto que o URL seja v lido e acess vel Depois uma inst ncia do JBoss Microcontainer criada juntamente com um implantador XML Este processo chamado bootstrapping e uma classe de conveni ncia chamada BasicBootstrap fornecida como parte do Microcontainer para permitir a co
21. gt if not found throws IOException for any problem accessing the VFS throws IllegalArgumentException if the path is null throws IllegalStateException if the file is closed or it is a leaf node vf VirtualFile getChild String path throws IOException his Get the children return the children throws IOException for any problem accessing the virtual file system throws IllegalStateException if the file is closed S List lt VirtualFile gt getChildren throws IOException Cap tulo 8 Sistema de Arquivo Virtual LES Get the children param filter to filter the children return the children throws IOException for any problem accessing the virtual file system throws IllegalStateException if the file is closed or it is a leaf node RE List lt VirtualFile gt getChildren VirtualFileFilter filter throws IOException Get all the children recursively lt p gt This always uses link VisitorAttributes RECURSE BP a Tate aes oe return the children throws IOException for any problem accessing the virtual file system throws IllegalStateException if the file is closed er List lt VirtualFile gt getChildrenRecursively throws IOException hes Get all the children recursively lt p gt This always uses link VisitorAttributes RECURSE param filter to filter the children return the children throws IOException for any problem accessing the virtual file system throws Il
22. implanta uma inst ncia do HRManager lt xml version 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer_2_0 xsd xmilns urn jboss bean deployer 2 0 gt lt bean name HRService class org jboss example service HRManager gt lt deployment gt Este XML cria uma inst ncia da classe HRManager e a registra com o HRService Este arquivo passado a um implantador XML associado com o Microcontainer no per odo de execu o que executa a implanta o atual e inst ncia os beans 3 4 Conectando POJOSs Inst ncias de POJOs individuais podem apenas fornecer um comportamento relativamente simples A pot ncia verdadeira dos POJOs vem da conex o dos mesmos para executar as tarefas mais complexas Como voc pode ligar POJOS para escolher as implementa es de estrat gias de sal rios diferentes O seguinte descritor de implanta o XML realiza isto 18 Cap tulo 3 Servi os de Constru o lt xml version 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer_2_0 xsd xmilns urn jboss bean deployer 2 0 gt lt bean name HRService class org jboss example service HRManager gt lt property name salaryStrategy gt lt inject bean AgeBasedSalary gt lt property gt lt bean gt lt bean name AgeBased
23. name cycleA class org jboss demos ioc cycle CyclePojo gt lt property name dependency gt lt inject bean cycleB gt lt property gt lt bean gt lt bean name cycleB class org jboss demos ioc cycle CyclePojo gt lt constructor gt lt parameter gt lt inject bean cycleA state Instantiated gt lt parameter gt lt constructor gt lt bean gt lt bean name cycleC class org jboss demos ioc cycle CyclePojo gt lt property name dependency gt lt inject bean cycleD gt lt property gt lt bean gt lt bean name cycleD class org jboss demos ioc cycle CyclePojo gt lt property name dependency gt lt inject bean cyclec state Instantiated gt lt property gt lt bean gt O 7 12 Suprimento e Demanda s vezes tal como uma inje o a depend ncia entre dois beans talvez n o seja aparentemente r pida 68 Cap tulo 7 Inje o de Depend ncia Avan ada e loC Exemplo 7 22 Uso do C digo Estat stico lt bean name TMDemand class org jboss demos ioc demandsupply TMDemander gt lt demand gt TM lt demand gt lt bean gt lt bean name SimpleTMSupply class org jboss demos ioc demandsupply SimpleTMSupplyer gt lt supply gt TM lt supply gt lt bean gt 7 13 Instala o Uma vez que um bean move atrav s de est gios diferentes voc deve invocar alguns m todos em apresenta como Entry invoca os m todos add e removeEntry do RepositoryManager para registrar se e
24. o de class path Eles s o os sub diret rios lib da distribui o client aop localizado na distribui o client aop do diret rio examples User Guide gettingStarted commandLineClient target client aop dir 39 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 5 2 Listagem do examples User_Guide gettingStarted commandLineClient target client aop dir Directory client 1 0 0 jar jboss beans xml lib auditAspect 1 0 0 jar concurrent 1 3 4 jar humanResourcesService 1 0 0 jar javassist 3 6 0 GA jar jboss aop 2 0 0 beta1 jar jboss aop mc int 2 0 0 Beta6 jar jboss common core 2 0 4 GA jar jboss common core 2 2 1 GA jar jboss common logging 10g4j 2 0 4 GA jar jboss common logging spi 2 0 4 GA jar jboss container 2 0 0 Beta6 jar jboss dependency 2 0 0 Beta6 jar jboss kernel 2 0 0 Beta6 jar jbossxb 2 0 0 CR4 jar log4j 1 2 14 jar trove 2 1 1 jar xercesImpl 2 7 1 jar log auditLog 18062010 122537 Primeiramente o 1ib auditAspect 1 0 0 jar solicitado para criar uma inst ncia de um aspect no per odo de execu o com o objetivo de executar a l gica Em seguida o arquivo jar para o JBoss AOP jposs aop jar juntamente com suas depend ncias javassist e trove adiciona a funcionalidade AOP Finalmente o jooss aop mc int jar requerido uma vez que ele cont m uma defini o do esquema XML que
25. o permite definir aspects dentro do descritor de implanta o Ele cont m tamb m o c digo de integra o para criar depend ncias entre os beans normais e os beans dos aspects com o Microcontainer permitindo adicionar o comportamento durante as fases de implanta o e desimplanta o Uma vez que voc est usando Maven2 para montar a distribui o client aop voc dever adicionar estes arquivos JAR pela declara o das depend ncias apropriadas em seu arquivo pom xm1 e cria o Ant 40 Cap tulo 5 Adi o de Comportamento ao AOP Exemplo 5 3 Amostra pom xml Excerpt para o AOP lt dependency gt lt groupId gt org jboss microcontainer examples lt groupId gt lt artifactId gt jboss oap lt artifactId gt lt version gt 2 0 0 lt version gt lt dependency gt lt dependency gt lt groupId gt org jboss microcontainer examples lt groupId gt lt artifactId gt javassist lt artifactId gt lt version gt 3 6 0 GA lt version gt lt dependency gt lt dependency gt lt groupId gt org jboss microcontainer examples lt groupId gt lt artifactId gt trove lt artifactId gt lt version gt 2 1 1 lt version gt lt dependency gt lt dependency gt lt groupId gt org jboss microcontainer examples lt groupId gt lt artifactId gt jboss aop mc int lt artifactId gt lt version gt 2 0 0 Beta6 lt version gt lt dependency gt 5 3 Aplica o de um Aspect Voc pode configurar o jboss beans xm1 para
26. private boolean importAll included packages String includedPackages excluded packages String excludedPackages excluded for export String excludedExportPackages included packages ClassFilter included excluded packages ClassFilter excluded excluded for export ClassFilter excludedExport requirements RequirementsMetaData requirements capabilities CapabilitiesMetaData capabilities setters amp getters true new RequirementsMetaData new CapabilitiesMetaData apresentam o ClassLoading API definido no XML e Java respectivamente 94 Cap tulo 9 A Camada ClassLoading Exemplo 9 5 ClassLoading API definido no XML lt classloading xmins urn jboss classloading 1 0 name ptd jsf 1 0 war domain ptd jsf 1 0 war parent domain ptd ear 1 0 ear export all NON EMPTY import all true parent first true gt Exemplo 9 6 ClassLoading API definido no Java ClassLoadingMetaData clmd new ClassLoadingMetaData if name null clmd setDomain name Domain clmd setParentDomain parentDomain clmd setImportAll true clmd setExportAll ExportAll NON_EMPTY clmd setVersion Version DEFAULT_VERSION Voc pode adicionar o ClassLoadingMetaData implanta o tanto de forma program tica ou declarativa atrav s do jboss classloading xm1 Exemplo 9 7 Adi o do ClassLoadingMetaData usando o jboss classloading xml lt classloading xmins urn jboss classloa
27. uma por o de classes que mant m uma lista de funcion rios e seus detalhes endere os e sal rios neste caso poss vel configurar o HRManager com o uso da interface SalaryStrategy de forma que as implementa es de estrat gias de sal rios est o dispon veis para definir os limites menores e maiores de sal rios para diferentes fun es de funcion rios 3 2 Compilando o Projeto de Amostra do HRManager Emita o comando mvn compile a partir do diret rio humanResourcesService para compilar este c digo de fonte Isto cria um novo diret rio chamado target classes que cont m as classes compiladas E para limpar o projeto e remover o diret rio de destino emita o comando mvn clean 3 3 Cria o de POJOs Antes de um POJO pode ser usado voc precisa cri lo Voc precisa de um mecanismo de nomea o que o permite registrar uma refer ncia inst ncia de POJO com um nome Os clientes precisam deste nome para usar o POJO O Microcontainer fornece tal mecanismo o Controlador O Controlador permite voc implantar seus servi os baseados no POJO em um ambiente do per odo de execu o 3 3 1 Descritores de Implanta o XML Ap s compilar esta classes use um descritor de implanta o XML para criar inst ncia das mesmas O descritor cont m uma lista de beans representando inst ncias individuais Cada bean possui um nome nico de forma que pode ser chamado por clientes no per odo de execu o O seguinte descritor
28. 2 2 1 1801777 2009 08 07 05 16 01 1000 Java version 1 6 0 O Java home usr lib jvm java 1 6 0 openjdk 1 6 0 0 jre Default locale en US platform encoding UTF 8 OS name Linux version 2 6 30 9 96 fc11 1586 arch i386 Family n unix Usu rios do Windows Para verificar de que as altera es foram implantadas corretamente abra um terminal e execute o seguinte comando Num prompt de comando execute mvn version C gt mvn version Apache Maven 2 2 1 r801777 2009 08 06 12 16 01 0700 Java version 1 6 0 17 Java home C Sun SDK jdk jre Default locale en US platform encoding Cp1252 OS name windows xp version 5 1 arch x86 Family windows 11 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Voc configurou o Maven com xito para uso com as amostras neste guia 1 2 Configura es Especiais do Maven para as Amostras do Microcontainer O Maven um sistema de constru o modular que puxa depend ncia conforme necess rio As Settings username m2 settings xm1 Windows Caso o arquivo n o existir voc pode cri lo primeiramente 12 Cap tulo 1 Pr requesitos para uso deste Guia Exemplo 1 1 Arquivo settings xm1 de Amostra lt settings gt lt profiles gt lt profile gt lt id gt jboss repository lt id gt lt activation gt lt property gt lt name gt jboss repository off lt name gt lt property gt lt activation gt lt reposit
29. B gt lt interface gt org jboss demos ioc lazy ILazyPojo lt interface gt lt lazy gt lt parameter gt lt constructor gt lt bean gt lt bean name lazyB class org jboss demos ioc lazy LazyImp1 gt lt constructor gt lt parameter gt lt lazy bean lazyA gt lt interface gt org jboss demos ioc lazy ILazyPojo lt interface gt lt lazy gt lt parameter gt lt constructor gt lt bean gt lt lazy name anotherLazy bean Pojo exposeClass true gt lt bean name Pojo class org jboss demos ioc lazy Pojo gt 7 15 Ciclo de vida Por padr o o Microcontainer usa os m todos create start e destroy quando ele passa por diversos est gios No entanto voc n o precisa que o Microcontainer os chame Devido a isto um sinalizador ignore est dispon vel Exemplo 7 25 Ciclos de Vida do Bean lt bean name FullLifecycleBean 3 class org jboss demos ioc lifecycle FullLifecycleBean gt lt bean name FullLifecycleBean 2 class org jboss demos ioc lifecycle FullLifecycleBean gt lt create ignored true gt lt bean gt lt bean name FullLifecycleBean 1 class org jboss demos ioc lifecycle FullLifecycleBean gt lt start ignored true gt lt bean gt 70 Cap tulo 8 Sistema de Arquivo Virtual Cap tulo 8 Sistema de Arquivo Virtual A duplica o do c digo de recurso de manuseio um problema comum para desenvolvedores Na maioria dos casos o c digo determina informa
30. Configura o 16 Cap tulo 3 Servi os de Constru o Cap tulo 3 Servi os de Constru o Os Servi os s o trechos de c digo que executam trabalho necess rio para clientes m ltiplos Colocaremos algumas restri es adicionais na defini o de um servi o para nossas finalidades Os servi os devem possuir nomes nicos que s o referenciados ou chamados por clientes Os intervalos de um servi o devem ser invis veis e sem import ncia aos clientes Este o conceito black box do object oriented programming OOP No OOP cada objeto independente e nem um outro objeto precisa saber como cada um realiza seu trabalho inn Os servi os s o constru dos a partir de POJOS no contexto do Microcontainer Um POJO basicamente um servi o em sua pr pria fun o mas n o pode ser acessado por um nome nico e deve ser criado pelo cliente que necessita disto N o necess rio implementar um POJO por classes separadas com o objetivo de fornecer uma interface bem definida mesmo que um POJO tenha que ser criado no per odo de execu o pelo cliente N o h necessidade de recompilar clientes para uso do rec m criado POJO contando que os campos e m todos n o sejam removidos e o acesso aos mesmos n o seja restrito A implementa o da interface apenas necess ria para permitir que um cliente escolha entre implementa es alternativas Caso o cliente seja compilado em refer ncia interface diferentes implementa
31. FSCacheFactory Por padr o nada estar com cache mas existem algumas implementa es VFSCache usando algoritmos tais como Least Recently Used LRU ou timed cache Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Cap tulo 9 A Camada ClassLoading O JBoss possui uma maneira nica de lidar com o classloading assim como a camada de classloading que vem com o Microcontainer O Classloading um suplemento que voc pode usar quando desejar classloading sem padr o As altera es camada do ClassLoading do EAP 5 1 s o teis e em tempo certo com o aumento da demanda do classloading de estilo OSGi e um n mero de novas especifica es do classloading do Java vista A camada do Microcontainer ClassLoading uma camada de abstra o A maioria de detalhes est o bloqueados em m todos privados de pacote e privados sem comprometer a extens o e funcionalidade dispon vel atrav s das classes p blicas que fazem o API Isto significa que voc pode codificar em refer ncia pol tica mas n o em refer ncia aos detalhes do classloader O projeto ClassLoader est dividido em 3 sub projetos classloader classloading classloading vfs O classloader cont m uma extensao java lang ClassLoader personalizada sem qualquer pol tica classloading espec fica A pol tica classloading inclui o conhecimento de onde e como carregar O Classloading uma extens o dos mecanismos de depend ncia do Microcon
32. JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Cap tulo 2 Introdu o ao Microcontainer Cap tulo 2 Introdu o ao Microcontainer O JBoss Microcontainer uma refatora o do JBoss JMX Microkernel para suporte direto da implanta o POJO e uso aut nomo fora do servidor do aplicativo JBoss O Microcontainer designado para atingir as necessidades espec ficas dos desenvolvedores Java que desejam usar as t cnicas de programa o do objeto orientado para implementar rapidamente o software Adicionado a isto ele permite que o software seja implantado em uma grande abrang ncia de dispositivos desde plataformas de computa o m veis ambientes de grade de computa o em grande escala e tudo entre os dois 2 1 Recursos Todos os recursos do JMX Microkernel Implanta o POJO direta n o h necessidade para Standard XMBean ou MBeanProxy Inje o de depend ncia do estilo IOC Direto Gerenciamento aprimorado do ciclo de vida Controle adicional sobre depend ncias Integra o AOP Transparente Sistema de Arquivo Virtual Framework de Implanta o Virtual OSGi classloading 2 2 Defini es Este guia usa alguns termos que talvez n o sejam familiares Voc poder encontrar alguns exemplos Lista de Defini o do Microcontainer JMX Microkernel O JBoss JMX Microkernel um ambiente Java modular Ele difere se dos ambientes padr es como J2EE de maneira que o desenvolvedor apto a escolher exatamente
33. JBoss Microcontainer Exemplo 5 1 POJO de Amostra public class AuditAspect private String logDir private Bufferedwriter out public AuditAspect logDir System getProperty user dir log File directory new File logDir if directory exists directory mkdir public Object audit ConstructorInvocation inv throws Throwable SimpleDateFormat formatter new SimpleDateFormat ddMMyyyy kkmmss Calendar now Calendar getInstance String filename auditLog formatter format now getTime File auditLog new File logDir filename auditLog createNewFile out new Bufferedwriter new Filewriter auditLog return inv invokeNext 3 public Object audit MethodInvocation inv throws Throwable String name inv getMethod getName Object args inv getArguments Object retVal inv invokeNext StringBuffer buffer new StringBuffer for int i 0 i lt args length im if i gt 0 buffer append buffer append args i toString if out null out write Method name if buffer length gt 0 out write Args buffer toString if retVal null out write Return retVal toString out write n out flush return retVal Procedimento 5 1 Cria o do POJO 1 O construtor checa a presen a de um diret rio no diret rio log de trabalho atual e cria um novo 38 Cap tulo 5 Ad
34. NOG sea A DeploymentStage PRE PARSE new DeploymentStage PreParse NOT INSTALLED The parse stage where metadata is read DeploymentStage PARSE new DeploymentStage Parse PRE PARSE The post parse stage where metadata can be fixed up DeploymentStage POST PARSE new DeploymentStage PostParse PARSE The pre describe stage where default dependencies metadata can be created DeploymentStage PRE DESCRIBE new DeploymentStage PreDescribe POST_PARSE The describe stage where dependencies are established DeploymentStage DESCRIBE new DeploymentStage Describe PRE DESCRIBE The classloader stage where classloaders are created DeploymentStage CLASSLOADER new DeploymentStage ClassLoader DESCRIBE The post classloader stage e g aop DeploymentStage POST_CLASSLOADER new DeploymentStage PostClassLoader CLASSLOADER The pre real stage where before real deployments are done DeploymentStage PRE REAL new DeploymentStage PreReal POST CLASSLOADER The real stage where real deployment processing is done DeploymentStage REAL new DeploymentStage Real PRE REAL The installed stage could be used to provide valve in future DeploymentStage INSTALLED new DeploymentStage Installed REAL Os est gios pr existentes de implanta es s o mapeados aos estados de controlador interno do Microcontainer Eles fornecem uma visualiz
35. Revisado para a Plataforma do Aplicativo JBoss Enterprise 5 1 0 GA 107
36. Rs Voc pode configurar quais recursos a serem criptografados com exce o de conte dos do diret rio MET A INF 92 Cap tulo 9 A Camada ClassLoading public class EncryptedService extends PrintService public void start throws Exception ClassLoader cl getClass getClassLoader URL url cl getResource config settings txt if url null throw new IllegalArgumentException No such settings txt InputStream is url openStream print is Printing settings n is cl getResourceAsStream config properties xml if is null throw new IllegalArgumentException No such properties xml print is nPrinting properties n Este servi o emite os conte dos dos dois arquivos de configura o Ele demonstra que a descriptografia de quaisquer recursos criptografados est oculta na camada do classloading Para test lo voc pode tanto criptografar o m dulo de pol tica ou usar uma criptografia existente Para colocar isto em pr tica voc precisa vincular apropriadamente o EncryptedService para ClassLoaderSystem e implantadores O particionamento do ClassLoaderSystem ser discutido mais adiante neste cap tulo 9 2 ClassLoading Ao inv s de usar a abstra o do ClassLoader diretamente voc pode criar os m dulos do ClassLoading que cont m declara es das depend ncias ClassLoader Uma vez que as depend ncias s o especificadas os ClassLoaderPolicys s o constru dos e conectad
37. Salary class org jboss example service util AgeBasedSalaryStrategy gt lt deployment gt Este XML cria uma inst ncia da implementa o da estrat gia de sal rio escolhido pela inclus o de um elemento lt bean gt adicional O AgeBasedSalaryStrategy escolhido desta vez Em seguida o c digo injeta uma refer ncia a este bean na inst ncia do HRManager criado usando o bean do HRService A inje o poss vel uma vez que a classe HRManager cont m um m todo setSalaryStrategy SalaryStrategy strategy O JBoss Microcontainer chama este m todo na inst ncia rec m criada do HRManager e passa a refer ncia inst ncia AgeBasedSalaryStrategy O descritor da implanta o XML leva a mesma sequ ncia de eventos a ocorrerem como se voc estivesse escrito o seguinte c digo HRManager hrService new HRManager AgeBasedSalaryStrategy ageBasedSalary new AgeBasedSalaryStrategy hrService setSalaryStrategy ageBasedSalary Adicionado inje o de execu o atrav s dos m todos setter de propriedade o JBoss Microcontainer pode executar a inje o atrav s dos par metros do construtor caso isto seja necess rio Para maiores informa es sobre este respeito por favor consulte o cap tulo Inje o na Parte Il POJO Development n t n 3 4 1 Considera es Especiais Embora seja poss vel criar inst ncias de classes usando o elemento lt bean gt no descritor da implanta o nem sempre a melhor maneira Por exem
38. Ss SP Sb ts E TA Create new root param rootURI the root url return the virtual file throws IOException if there is a problem accessing the VFS throws IllegalArgumentException if the rootURL ee static VirtualFile createNewRoot URI rootURI throws IOException na Get the root virtual file param rootURI the root uri return the virtual file throws IOException if there is a problem accessing the VFS throws IllegalArgumentException if the rootURL is null REA static VirtualFile getRoot URI rootURI throws IOException O Gane fat Mee TE PEE Get the virtual file system for a root url param rootURL the root url return the virtual file system throws IOException if there is a problem accessing the VFS throws IllegalArgumentException if the rootURL is null oe static VFS getVFS URL rootURL throws IOException foes Create new root param rootURL the root url return the virtual file throws IOException if there is a problem accessing the VFS throws IllegalArgumentException if the rootURL ye static VirtualFile createNewRoot URL rootURL throws IOException TEES Get the root virtual file param rootURL the root url return the virtual file throws IOException if there is a problem accessing the VFS throws IllegalArgumentException if the rootURL P static VirtualFile getRoot URL rootURL throws IOException 81 Os Plataforma do Aplicativo JBoss Enterprise 5 Gui
39. a o c ntrica de ciclo de vida da implanta o dos estados de controladores gen ricos A implanta o convertida dentro do DeploymentControllerContext do componente do Microcontainer A m quina do estado do Microcontainer manuseia as depend ncias As implanta es s o manuseadas sequencialmente pelo est gio de implanta o A ordem da hierarquia inteiramente implantada manuseada usando a propriedade parent first do implantador Esta propriedade determinada para true por padr o Voc pode especificar tamb m quais n veis de hierarquia seu implantador manusear Voc pode escolher all top level components only ou no components n t n A maneira com que o Microcontainer manuseia os modelos de componente e manuseia depend ncias v lida aqui tamb m Caso haja uma depend ncia n o resolvida a implanta o esperar no estado atual 102 Cap tulo 10 Framework de Implanta o Virtual provavelmente relatando um erro caso o estado atual n o seja um estado requerido A adi o de uma nova implanta o conclu da pela extens o de um dos muitos implantadores auxiliares existentes Alguns dos implantadores precisam da implanta o de refor o VFS enquanto outros usam uma implanta o geral Na maioria dos casos os implantadores de an lise s o os que precisam do refor o VFS Al m disso certifique se de que os implantadores rodam de forma recursiva atrav s de toda a implanta o sub implanta o e c
40. a do Usu rio do JBoss Microcontainer PAR Get the root file of this VFS return the root throws IOException for any problem accessing the VFS ee VirtualFile getRoot throws IOException tr s diferentes m todos s o similares getVFS createNewRoot getRoot O getVFS retorna uma inst ncia VFS mas n o cria uma inst ncia VirtualFile Isto importante uma vez que existem m todos que ajudam a configura o de uma inst ncia VFS consulte javadocs do API de classes VFS antes de instru la a criar uma raiz do VirtualFile Por outro lado os dois outros m todos usam configura es para a cria o da raiz A diferen a entre createNewRoot e getRoot s o os detalhes de cache dos quais ser o descritos mais tarde Exemplo 8 4 Uso do getVFS URL rootURL get root url VFS vfs VFS getVFS rootURL configure vfs instance VirtualFile rooti vfs getRoot or you can get root directly VirtualFile root2 VFS crateNewRoot rootURL VirtualFile root3 VFS getRoot rootURL Outro detalhe til do VFS API sua implanta o de um padr o de visitante apropriado muito simples coletar recursivamente recursos diferentes uma tarefa que dif cil realizar com o carregamento do rec 82 urso do JDK simples Cap tulo 8 Sistema de Arquivo Virtual Exemplo 8 5 Recursos de Cole o Recursiva public interface VirtualFileVisitor GRSA Get the search attribues for this visitor
41. aliza o em seu sistema Clique no link do arquivo zip compilado por exemplo apache maven 2 2 1 bin zip Selecione um download espelhado da lista Usu rios do Linux Salve o arquivo zip em seu diret rio home Usu rios do Windows Salve o arquivo zip em seu diret rio C Documents and Settingsluser name 3 Instala o do Maven Usu rios do Linux Extraia o arquivo zip para seu diret rio home Caso tenha selecionado o arquivo Zip no segundo passo e n o tenha renomeado o diret rio o diret rio extra do nomeado apache maven version Usu rios do Windows Extraia o arquivo zip para C Program Files Apache Software Foundation Caso tenha selecionado o arquivo zip no segundo passo e n o tenha renomeado o diret rio o diret rio extra do nomeado apache maven version 4 Configura o das Vari veis de Ambiente Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Usu rios do Linux Adicione as seguintes linhas ao seu bash profile Certifique se daa altera o do username para seu nome de usu rio atual e de que o diret rio Maven o nome do diret rio atual O n mero de vers o pode ser diferente da vers o instalada abaixo export M2 HOME home username apache maven 2 2 1 export M2 M2 HOME bin export PATH M2 PATH A vers o Maven que voc acabou de instalar ser a vers o padr o utilizada pela inclus o do M2 no in cio de seu caminho Voc pode configurar o ca
42. alue gt lt inject bean 0bject gt lt property gt lt beanfactory gt lt bean name PrototypeCreator class org jboss demos ioc factory PrototypeCreator gt lt property name default gt lt inject bean DefaultPrototype gt lt property gt lt property name enhanced gt lt inject bean EnhancedPrototype gt lt property gt lt property name proxied gt lt inject bean ProxiedPrototype gt lt property gt lt bean gt Cap tulo 7 Inje o de Depend ncia Avan ada e loC 63 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 16 BeanFactory Extendido public class EnhancedBeanFactory extends GenericBeanFactory public EnhancedBeanFactory KernelConfigurator configurator super configurator public Object createBean throws Throwable Object bean super createBean Class clazz bean getClass if clazz isAnnotationPresent SetterProxy class Set lt Class gt interfaces new HashSet lt Class gt addInterfaces clazz interfaces return Proxy newProxy Instance clazz getClassLoader interfaces toArray new Class interfaces size new SetterInterceptor bean JE else return bean protected static void addInterfaces Class clazz Set lt Class gt interfaces if clazz null return interfaces addAll Arrays asList clazz getInterfaces addInterfaces clazz getSuperclass interfaces private class SetterIntercep
43. ando deixando o estado CREATE lt aop lifecycle start gt aplicado quando entrando deixando o estado ST ART lt aop lifecycle install gt aplicado quando entrando deixando o estado INST ALLED Assim como os elementos lt bean gt e lt aop aspect gt os elementos lt aop lifecycle gt cont m os atributos name e class O Microcontainer usa estes atributos para criar uma inst ncia da classe callback nomeando a de forma que pode ser usada como beans entrando ou deixando o estado relevante durante a implanta o ou desimplanta o Voc pode especificar quais beans s o afetados pelo Exemplo 5 5 Usando o Atributo classes lt aop lifecycle install xmins aop urn jboss aop beans 1 0 name InstallAdvice class org jboss test microcontainer support LifecycleCallback classes org jboss test microcontainer support Install gt lt aop lifecycle install gt Este c digo especifica qual l gica adicional da classe lifecycleCallback aplicada a quaisquer classes de bean que s o anotadas com org jboss test microcontainer support Install antes de entrar e ap s deixar o estado INSTALLED Com o objetivo da classe de retorno de chamada funcionar ela deve conter os m todos install e Exemplo 5 6 M todos de Instala o e Desinstala o import org jboss dependency spi ControllerContext public class LifecycleCallback public void install ControllerContext ctx System out printin Bean ctx getName is being ins
44. aplicar o aspect de auditoria uma vez que voc possui uma distribui o v lida contendo tudo o que voc possui Ele est no examples User Guide gettingStarted commandLineClient target client aop dir lt xml version 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer 2 0 xsd xmins urn jboss bean deployer 2 0 gt lt bean name AspectManager class org jboss aop AspectManager gt lt constructor factoryClass org jboss aop AspectManager factoryMethod instance gt lt bean gt lt aop aspect xmins aop urn jboss aop beans 1 0 name AuditAspect class org jboss example aspect AuditAspect method audit pointcut execution public org jboss example service HRManager gt new OR execution public org jboss example service HRManager gt gt lt aop aspect gt lt deployment gt Procedimento 5 2 Explica o de um C digo para Aplica o de um Aspect 1 Antes de voc aplicar seu aspect a qualquer uma das classes voc precisa criar uma inst ncia do org jboss aop AspectManager usando um elemento lt bean gt Um m todo de f brica 41 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer usado aqui ao inv s de chamar um construtor convencional sendo que apenas uma inst ncia do AspectManager no JVM necess ria no per odo de execu o 2 Em seguida
45. blema Sugest es de Aperfei oamento Informa o adicional Por favor forne a o seu nome para que tenha o reconhecimento merecido por relatar este problema Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Parte I Introdu o ao Microcontainer Guia Tutorial Cap tulo 1 Pr requesitos para uso deste Guia Cap tulo 1 Pr requesitos para uso deste Guia Voc precisa instalar e configurar alguns softwares de suporte para uso das amostras deste guia al m de baixar o c digo para as amostras 1 1 Instala o do Maven As amostras usadas neste projeto requerem o Maven v2 2 0 ou mais avan ado Baixe o Maven diretamente da p gina principal do Apache Maven instalando e configurando seu sistema conforme Procedimento 1 1 Instala o do Maven 1 Certifique se de que o Java Developer Kit 1 6 ou superior est instalado Isto tamb m solicitado para a Plataforma Enterprise Verifique de que possui o Java instalado em seu sistema e determine a vari vel do ambiente JAVA HOME emseu bash profile para o Linux ou nas Propriedades de Sistema para o Windows Para maiores informa es sobre a configura o das vari veis de ambiente por favor 2 Realizando o download do Maven Este passo e passos seguintes assumem que voc j salvou o Maven localiza o sugerida de seu sistema operacional O Maven como qualquer outra aplica o do Java est apto a ser instalado em qualquer loc
46. breviada pointcut conforme descrito anteriormente 46 Parte Il Conceitos Avan ados do Microcontainer Parte Il Conceitos Avan ados do Microcontainer Esta se o cobre conceitos avan ados e apresenta alguns recursos interessantes do Microcontainer As amostras de c digo s o consideradas amostras incompletas no resto do guia e responsabilidade do programador extrapolar e estend las conforme necess rio 47 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Cap tulo 6 Modelos de Componentes O JBoss Microcontainer trabalha com diversos modelos de componente POJO populares Os componentes s o programas de software re utiliz veis que voc pode desenvolver e agrupar com facilidade para criar aplicativos sofisticados A integra o efetiva com estes modelos de componente era um objetivo chave para o Microcontainer Alguns modelos de componente que podem ser usados com o Microcontainer s o JMX Spring e Guice 6 1 Intera es permitidas com os Modelos de Componente Antes de discutir a intera o com alguns dos modelos de componente popular importante entender quais tipos de intera es s o permitidas Os JMX MBeans s o um exemplo de um modelo do componente As intera es dos mesmo s o execu es das opera es do MBean referencia o dos atributos configura o dos atributos e declara o expl cita das depend ncias entre MBeans nomeados Os comportamentos e intera e
47. cccccccciccccice rr 1 1 Instala o do Maven 1 2 Configura es Especiais do Maven para as Amostras do Microcontainer 1 3 Realizando o download das Amostras Capitulo 2 Introdu o ao Microcontainer 0 ccc rr 2 1 Recursos 2 2 Defini es 2 3 Isola o Cap tulo 3 Servi os de Constru o 2 eee 3 1 Introdu o s Amostras dos Recursos Humanos 3 2 Compilando o Projeto de Amostra do HRManager 3 3 Cria o de POJOs 3 3 1 Descritores de Implanta o XML 3 4 Conectando POJOs 3 4 1 Considera es Especiais 3 5 Trabalhando com Servi os 3 5 1 Configura o de um Servi o 3 5 2 Testando o Servi o 3 5 3 Empacotando um Servi o Cap tulo 4 Uso de Servi os ccccccc ee e 4 1 Aplicando o Bootstrapping ao Microcontainer 4 2 Implanta o do Servi o 4 3 Acesso Direto 4 4 Acesso Indireto 4 5 Classloading Dinamico 4 5 1 Problemas com os Classloaders criados com os Descritores de Implanta o Capitulo 5 Adi o de Comportamento ao AOP cccccc ces 5 1 Criando um Aspect 5 2 Configura o do Microcontainer para o AOP 5 3 Aplica o de um Aspect 5 4 Retornos de Chamada do Ciclo de Vida 5 5 Adi o das Pesquisas de Servi o atrav s do JNDI Parte Il Conceitos Avan ados do Microcontainer 00 0 ccc cece ees Cap tulo 6 Modelos de Componentes 0 0 c cence teen n eens 6 1 Interagdes permitidas com os Modelos de Compon
48. da ao Aspecto trabalha para permitir que os cross cutting concerns sejam aplicados as classes ap s terem sido compilados Isto mant m livre o c digo de fonte da l gica que n o central ao prop sito principal da classe e dinamiza a manuten o Normalmente se uma classe implementa uma interface cada m todo chama uma inst ncia da primeira classe atrav s do proxy Este proxy implementa a mesma interface adicionando o comportamento requerido Por outro lado caso uma interface n o for usada o c digo bite do java da classe compilada modificado os m todos originais s o renomeados e substitu dos pelos m todos que implementam um cross cutting logic Depois estes novos m todos podem chamar os m todos originais ap s o cross cutting logic para criar sub classes da classe original que substitui seus m todos Os m todos substitu dos executam o cross cutting logic antes de chamar os m todos correspondentes da super classe O JBoss AOP um framework para o AOP Voc pode criar cross cutting concerns usando classes e m todos java convencionais Na terminologia AOP cada quest o representada por um aspect que voc implementa usando um POJO simples O comportamento fornecido por m todos com o aspecto chamado advices Estes avisos seguem certas regras para seus par metros al m de retornar tipos e quaisquer exce es lan adas pelos mesmos Voc pode usar com este framework as no es do objeto orientado tais como heran a
49. dados do mapa de anexos antes de realizar o trabalho adicional naqueles dados 103 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer O Natural order refere se maneira em que os implantadores s o ordenados Uma ordem comum e natural usa os termos relativos before e after No entanto com o mecanismo dos anexos j posicionados voc pode ordenar implantadores pela maneira em que eles produzem e ou consomem os anexos Cada anexo possui uma chave e implantadores passam teclas aos anexos que produzem Caso seu implantador produzir um anexo a tecla produzida chamada output Caso o implantador consumir um anexo a tecla cnamada input Os implantadores possuem entradas ordinary e entradas required As entradas ordinary simples s o apenas usadas para ajudar determinar a ordem natural As entradas requeridas tamb m ajudam a determinar a ordem al m de outra fun o Elas ajudam a determinar se o implantador na realidade relevante para a implanta o gerada pela checagem se um anexo que corresponde quela entrada requerida existe no mapa dos anexos Enquanto a ordena o relativa continua sendo suportada ela considerada uma m pr tica e talvez n o seja suportada nas libera es futuras 10 4 Cliente Usu rio e Uso do Servidor e Detalhes da Implementa o Esses recursos ocultam os detalhes de implanta o reduzindo os erros de usagem enquanto otimizando o processo de desenvol
50. derFactory transforma o implantador XML em um VFSClassLoaderPolicyModule que ent o cria a inst ncia ClassLoader atual Voc pode ent o usar esta nova inst ncia ClassLoader com seus beans O VFSClassLoaderFactory estende o ClassLoadingMetaData de forma que todas as amostras relativas ao ClassLoadingMetaData s o tamb m v lidas nestas circunst ncias 99 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Cap tulo 10 Framework de Implanta o Virtual O novo Virtual Deployment Framework VDF uma maneira aprimorada para gerenciar as implanta es no Microcontainer Este cap tulo detalha alguns de seus recursos teis 10 1 Manuseio Agn stico de Tipos de Implanta o O tipo tradicional de uma implanta o virtual baseado em classes que j existem em espa o de classe compartilhada ou dom nio Neste caso o final de cada produto um novo servi o instalado no servidor a partir de um novo cliente principal A maneira tradicional de realizar isto realizar o upload de um arquivo descritor O novo VDF simplifica este processo pela passagem sobre bytes e serializando os em uma nova inst ncia Deployment O outro tipo de implanta o que estende o primeiro uma implanta o baseada no sistema de arquivo b sico backed up pelo Microcontainer VFS Esta abordagem est descrita em mais detalhes no 10 2 A separa o do Reconhecimento da Estrutura da l gica do ciclo de via da Imp
51. deseje reimplantar um servi o existente alterar algumas de suas classes voc precisar 32 Cap tulo 4 Uso de Servi os encontrar um caminho alternativo s restri es de seguran a que pro bem um classloader existente de recarregarem as classes O objetivo criar um novo classloader que reconhece a localiza o de novas classes do servi o ou que carregam novas vers es de classes de servi os existentes com o objetivo de implantar os beans de servi o O JBoss Microcontainer usa o elemento lt classloader gt do descritor de implanta o para completar esta tarefa Exemplo 4 5 Listagem do Diret rio commandLineClient target client cl client 1 0 0 jar jboss beans xml lib concurrent 1 3 4 jar jboss common core 2 0 4 GA jar jboss common core 2 2 1 GA jar jboss common logging 10g94j 2 0 4 GA jar jboss common logging spi 2 0 4 GA jar jboss container 2 0 0 Beta6 jar jboss dependency 2 0 0 Beta6 jar jboss kernel 2 0 0 Beta6 jar jbossxb 2 0 0 CR4 jar log4j 1 2 14 jar xercesImp1 2 7 1 jar otherLib humanResourcesService 1 0 0 jar run sh O arquivo humanResourcesService jar foi removido a um novo sub diret rio chamado otherLib Ele n o esta mais dispon vel para tanto os classloaders do aplicativo ou extens o cujos class paths s o determinados no script run sh java Djava ext dirs pwd lib cp client 1 0 0 jar org jboss example client Client 1 Uma solu o alternativa c
52. desregistrar se Exemplo 7 23 M todos de Chamada em Estados Diferentes lt bean name RepositoryManager class org jboss demos ioc install RepositoryManager gt lt install method addEntry gt lt parameter gt lt inject fromContext name gt lt parameter gt lt parameter gt lt this gt lt parameter gt lt install gt lt uninstall method removeEntry gt lt parameter gt lt inject fromContext name gt lt parameter gt lt uninstall gt lt bean gt lt bean name Entry class org jboss demos ioc install SimpleEntry gt lt install bean RepositoryManager method addEntry state Instantiated gt lt parameter gt lt inject fromContext name gt lt parameter gt lt parameter gt lt this gt lt parameter gt lt install gt lt uninstall bean RepositoryManager method removeEntry state Configured gt lt parameter gt lt inject fromContext name gt lt parameter gt lt uninstall gt lt bean gt 7 14 Lazy Mock Voc pode ter uma depend ncia num bean que raramente usado mas demora mais para ser resolver esta depend ncia Quando voc precisar de fato de um bean chame e use o bean de destina o esperando que ele tenha sido instalado por eles 69 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 24 Lazy Mock lt bean name lazyA class org jboss demos ioc lazy LazyImp1 gt lt constructor gt lt parameter gt lt lazy bean lazy
53. ding 1 0 domain DefaultDomain top level classloader true export all NON EMPTY import all true gt lt classloading gt O DefaultDomain compartilhado entre todos os aplicativos que n o definem seus pr prios dom nios Exemplo 9 8 Isola o do N vel do Dom nio T pico lt classloading xmins urn jboss classloading 1 0 domain IsolatedDomain export all NON_EMPTY import all true gt lt classloading gt 95 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 9 9 Isola o com um Pai Espec fico lt classloading xmins urn jboss classloading 1 0 domain IsolatedwithParentDomain parent domain DefaultDomain export all NON EMPTY import all true gt lt classloading gt Exemplo 9 10 j2seClassLoadingCompliance sem conformidade lt classloading xmlns urn jboss classloading 1 0 parent first false gt lt classloading gt O war implanta o uso deste m todo por padr o Ao inv s de realizar pesquisas do primeiro do pai padr o voc deve checar primeiramente seus pr prios recursos Exemplo 9 11 Implanta o OSGi T pica lt classloading xmins urn jboss classloading 1 0 gt lt requirements gt lt package name org jboss dependency spi gt lt requirements gt lt capabilities gt lt package name org jboss cache api gt lt package name org jboss kernel spi gt lt capabilities gt lt classloading gt 96 Cap tulo 9
54. ente 6 2 Bean sem depend ncias 6 3 Usando o Microcontainer com o Spring NOOOuAP AAA 12 13 15 15 16 17 18 18 18 18 19 19 20 20 22 27 28 29 31 32 35 37 37 39 41 42 45 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer 6 4 Uso do Guice com o Microcontainer 6 5 MBeans de Legacia e Mistura de Modelos de Componentes Diferentes 6 6 Exposi o de POJOs como MBeans Cap tulo 7 Inje o de Depend ncia Avan ada e loC 1 cee 74 F brica de valor 7 2 Retornos de Chamada 7 3 Modo de Acesso do Bean 7 4 Bean Alias 7 5 Suporte de Anota es XML ou MetaData 7 6 Autowire 7 7 F brica de Bean 7 8 Construtor de Metadados de Bean 7 9 ClassLoader Personalizado 7 10 Modo Controlador 7 11 Ciclo 7 12 Suprimento e Demanda 7 13 Instala o 7 14 Lazy Mock 7 15 Ciclo de vida Capitulo 8 Sistema de Arquivo Virtual cccccccccccc eee 8 1 API P blico de VFS 8 2 Arquitetura VFS 8 3 Implanta es Existentes 8 4 Ganchos de Extens o 8 5 Recursos Cap tulo 9 A Camada ClassLoading eee 9 1 ClassLoader 9 2 ClassLoading 9 3 ClassLoading VFS Capitulo 10 Framework de Implanta o Virtual 0 ccc eens 10 1 Manuseio Agn stico de Tipos de Implanta o 10 2 A separa o do Reconhecimento da Estrutura da l gica do ciclo de via da Implanta o 10 3 Controle de Fluxo Natural na forma de anexos 10 4 Cliente U
55. er String getResourceName String getClassName boolean isClass Class lt gt loadClass InputStream getInputStream throws IOException byte getBytes throws IOException Para usar o m dulo instancie sua inst ncia ResourceVisitor e passe a para o m todo Module visit Este recurso usado no framework para ndice do uso das anota es nas implanta es 9 3 ClassLoading VFS Estas amostras fornecem uma implanta o ClassLoader Policy que usa um projeto do Sistema do Arquivo Virtual do JBoss para carregar classes e recursos Voc pode usar esta ideia diretamente ou em combina o com o framework classloading Opcionalmente voc pode definir seus m dulos dentro da configura o do Microcontainer 98 Cap tulo 9 A Camada ClassLoading Exemplo 9 14 Classloading Module Deployer lt deployment xmins urn jboss bean deployer 2 0 gt lt classloader name anys classloader xmins urn jboss classloader 1 0 import all true domain Anys parent domain DefaultDomain gt lt capabilities gt lt package name org jboss test deployers vfs reflect support web gt lt capabilities gt lt root gt jboss tests url lt root gt lt classloader gt lt bean name AnyServlet class org jboss test deployers vfs reflect support web AnyServlet gt lt classloader gt lt inject bean anys classloader 0 0 0 gt lt classloader gt lt bean gt lt deployment gt A classe VFSClassLoa
56. er_Guide gettingstarted commandLineClient que segue o Maven Standard Exemplo 4 1 Listagem para o Diret rio examples User_Guide gettingstarted commandLineClient ges t assembly F aop xml classloader xml common xml pojo xml lat aop beans xm1 classloader beans xml pojo beans xml run sh va org jboss example client Client java ConsoleInput java EmbeddedBootstrap java UserInterface java resources L log4j properties test Trenlo Pi org jboss example client ClientTestCase java ClientTestSuite java MockUser Interface java resources L jboss beans xml BRR L classes L log4j properties O cliente consiste em tr s classes e uma interface localizadas no diret rio 24 Cap tulo 4 Uso de Servi os org jboss example client O User Interface descreve m todos que o cliente chama no per odo de execu o para solicitar a entrada do usu rio O ConsoleInput uma implanta o do User Interface que cria um TUI que o usu rio usa para intera o com o cliente A vantagem deste design que voc pode facilmente criar uma implanta o Swing do User Inter face mais tarde e substituir o TUI com o GUI Al m disso voc pode simular um processo de entrada de dados com um script Em seguida voc pode checar o comportamento do cliente automaticamente usando os casos de testes JUnit convencionais Para que a constru
57. es da interface podem ser fornecidas sem ter que recompilar o cliente A interface garante que as assinaturas do m todo n o sejam alteradas O restante deste guia consiste na cria o de um servi o de Recursos Humanos usando o Microcontainer para capturar e modalizar a l gica comercial do aplicativo Ap s o Microcontainer ser instalado o c digo de amostra pode ser encontrado em examples User Guide gettingStarted humanResourcesService 3 1 Introdu o s Amostras dos Recursos Humanos Os arquivos de fonte est o localizados em pacotes sob o diret rio examples User_Guide gettingStarted humanResourcesService src main java org j boss example service ap s ter extra do o arquivo ZIP Cada uma destas classes representam um POJO simples que n o implementa quaisquer interfaces especiais A classe mais importante a HRManager que representa o ponto de entrada de servi o servindo todos os m todos p blicos que clientes ir o cnamar M todos fornecidos pela Classe HRManager addEmployee Employee employee removeEmployee Employee employee getEmployee String firstName String lastName getEmployees getSalary Employee employee setSalary Employee employee Integer newSalary isHiringFreeze 17 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer setHiringFreeze boolean hiringFreeze getSalaryStrategy setSalaryStrategy SalaryStrategy strategy O Servi o de Recursos Humanos composto de
58. esquisa de um POJO simples ou obtendo um MBean de um servidor MBean Uma das op es da inje o usar um tipo de Exemplo 6 10 Autowiring lt deployment xmins urn jboss bean deployer 2 0 gt lt bean name FromGuice class org jboss demos models plain FromGuice gt lt constructor gt lt parameter gt lt inject bean PlainPojo gt lt parameter gt lt constructor gt lt property name guicePojo gt lt inject gt lt property gt lt bean gt lt bean name AllPojos class org jboss demos models plain AllPojos gt lt property name directMBean gt lt inject bean jboss demos service pojo gt lt property gt lt property name exposedMBean gt lt inject bean jboss demos service ExposedPojo gt lt property gt lt property name exposedMBean gt lt inject bean jboss demos service ExposedPojo gt lt property gt lt bean gt lt deployment gt O FromGuice injeta o Guice bean atrav s da combina o onde o PlainPojo injetado com uma inje o de nome comum A partir de agora voc pode testar se o Guice binding funciona como o 53 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 6 11 Testando a Funcionalidade do Guice public class FromGuice private IPojo plainPojo private org jboss demos models guice Pojo guicePojo public FromGuice IPojo plainPojo this plainPojo plainPojo public void setGuicePojo org jboss demos models gu
59. file isDirectory File fc file listFiles String path for int i 0 i lt fc length i path fc i getAbsolutePath if fc i isDirectory searchDir result fc i suffix else if path endswith suf fix 73 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer result add fc i toURL return true return false Existem tamb m diversos problemas com bloqueamento de arquivo nos sistemas do Windows for ando os desenvolvedores a copiar todos os arquivos hot deployable a outra localiza o prevenindo o bloqueamento dos mesmos nas pastas implantadas que preveniria tanto a exclus o e o sistema de arquivo baseado na desimplanta o O bloqueamento do arquivo um problema grande cuja nica solu o costumava ser centralizar todos os c digos de carregamentos de recursos em um nico local O projeto VFS foi a solu o criada para todos estes problemas VFS a abreviatura para Virtual File System Sistema de Arquivo Virtual 8 1 API P blico de VFS Usos do VFS navega o simples de recurso API Application Programmer Interface Interface de Programador do Aplicativo padr o do visitante Conforme mencionado anteriormente o manuseio e navega o de recursos s o complexos no JDK simples Voc deve sempre checar o tipo de recurso e estas checagens podem ser pesadas O VFS abstrai recursos num tipo de recurso nico VirtualFile 74 Exemplo 8 2 Ti
60. gt 80000 lt property gt lt bean gt lt bean name LocationBasedSalary class org jboss example service util LocationBasedSalaryStrategy gt lt property name minSalary gt 2000 lt property gt lt property name maxSalary gt 90000 lt property gt lt bean gt gt lt deployment gt OP importante mportante Dependendo de como voc acessa o servi o no per odo de execu o voc precisar encerrar o aplicativo e reinici lo novamente para reimplementar o servi o e ver suas altera es Isto reduz a flexibilidade do aplicativo mas resulta em um desempenho mais r pido no per odo de execu o Alternativamente voc pode estar apto a reimplantar o servi o enquanto o aplicativo estiver rodando Isto aumenta a flexibilidade mas resulta num desempenho mais lento no per odo de execu o Leve em considera o estas op es quando designando seus aplicativos 4 3 Acesso Direto Caso nenhum par metro seja gerado ao script run sh quando o cliente for inicializado uma refer ncia ao HRService bean pesquisada usando o controlador Microcontainer ap s o servi o ser implantado private HRManager manager private final static String HRSERVICE HRService void deploy bootstrap deploy url if useBus amp amp manager null ControllerContext context controller getInstalledContext HRSERVICE if context null manager HRManager context getTarget 29 Plataforma do Aplicativ
61. gurado pela edi o do descritor diretamente como um arquivo separado 2 Gerando o JAR Para gerar o JAR contendo todas as classes compiladas entre mvn package a partir do diret rio humanResourcesService 3 Disponibilize o JAR para outros projetos Para disponibilizar o JAR a outros projetos Maven entre mvn install para copi lo ao seu 22 Cap tulo 3 Servi os de Constru o Exemplo 3 3 Listagem dos Diret rios org jboss example service e META INF org jboss example service Address java Employee java HRManager java util AgeBasedSalaryStrategy java LocationBasedSalaryStrategy java SalaryStrategy java META INF MANIFEST MF maven org jboss micrcontainer examples humanResourceService O diret rio META INF maven criado automaticamente pelo Maven e n o ser apresentado caso voc use um sistema de constru o diferente 23 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Cap tulo 4 Uso de Servi os O cap tulo anterior orientou atrav s da cria o configura o testes e empacotamento de um servi o O pr ximo passo criar um cliente que executar o trabalho atual usando o servi o O cliente nesta amostra usa um Text User Interface TUI para aceitar a entrada do usu rio e resultados de sa da Isto reduz o tamanho e a complexidade do c digo de amostra Todos os arquivos necess rios est o localizados no diret rio examples Us
62. i o de Comportamento ao AOP caso n o o tenha encontrado 2 Em seguida um advice definido Este advice chamado a todo instante em que o construtor da classe de destina o chamado Isto cria um novo arquivo log com o diret rio log para gravar as chamadas de m todo realizadas em inst ncias diferentes da classe de destina o em arquivos separados 3 Finalmente outro advice definido Este advice v lido para cada chamada de m todo realizada na classe de destina o O nome do m todo e argumentos s o armazenados juntamente com o valor de retorno Esta informa o usada para construir uma grava o de auditoria e grav la no arquivo do log atual Cada advice chama inv invokeNext que e agrupa os advices caso mais de um cross cutting seja aplicado ou para cnamar o m todo construtor de destina o Cada advice implementado usando um m todo que usa o objeto de invoca o como um par metro lan a Throwable e retorna um Object No per odo de design voc n o precisa saber quais construtores ou m todos estes advices ser o aplicados portanto certifique se de que os tipos s o os mais gen ricos poss veis Para compilar a classe e criar um arquivo auditAspect jar que pode ser usado por outros exemplos digite mvn install no diret rio auditAspect 5 2 Configura o do Microcontainer para o AOP Antes de aplicar o aspect de auditoria a um Servi o HR um n mero de JARs devem ser adicionados extens
63. iases Uma vez que os nomes do componente s o tratados como Objetos o tipo de alias n o limitado Por padr o a substitui o de propriedade do sistema n o realizada Voc precisa configurar claramente o sinalizador substitu do conforme Exemplo 7 9 Bean Alias Simples lt bean name SimpleName class java lang Object gt lt alias gt SimpleAlias lt alias gt lt alias replace true gt some system property lt alias gt lt alias class java lang Integer gt 12345 lt alias gt lt alias gt lt javabean xmlns urn jboss javabean 2 0 class org jboss demos bootstrap Main gt lt alias gt lt bean gt 7 5 Suporte de Anota es XML ou MetaData O suporte AOP um recurso prim rio no JBoss Container Voc pode usar os aspectos AOP e beans tenta interceptar uma invoca o do m todo baseando se em outra invoca o A anota o pode vir de qualquer lugar Pode ser uma anota o de classe verdadeira ou uma anota o adicionada atrav s da configura o xml 59 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 10 Intercep o de um M todo baseado na Anota o lt interceptor xmins urn jboss aop beans 1 0 name StopwatchInterceptor class 0rg jboss demos ioc annotations StopWatchInterceptor gt lt bind xmlns urn jboss aop beans 1 0 pointcut execution Morg jboss demos ioc annotations StopwatchLog gt OR execution gt org jboss dem
64. ice Pojo guicePojo this guicePojo guicePojo public void start f plainPojo guicePojo getMcPojo throw new IllegalArgumentException Pojos are not the same plainPojo l guicePojo getMcPojo alias trivial mas um recurso necess rio Ele deve ser introduzido como um modelo de componente dentro do Microcontainer com o objetivo de implant lo como uma depend ncia verdadeira Os detalhes Exemplo 6 12 C digo de Fonte AbstractController lt deployment xmins urn jboss bean deployer 2 0 gt lt alias name SpringPojo gt springPojo lt alias gt lt deployment gt Este descritor mapeia o nome do SpringPojo para o springPojo alias O benef cio dos aliases como modelos de componente verdadeiros que o tempo de implanta o do bean torna se menos importante O alias espera um estado desinstalado at que o real bean aplique os triggers no mesmo n t n 54 Cap tulo 7 Inje o de Depend ncia Avan ada e loC Cap tulo 7 Inje o de Depend ncia Avan ada e loC Atualmente o Dependency injection DI tamb m chamado Inversion of Control loC fica no n cleo de muitos frameworks que adotam a no o de um container ou modelo de componente Os modelos de componente est o descritos num cap tulo anterior O JBoss JMX Kernel precursor do Microcontainer fornecia apenas suporte DI loC de carga leve primeiramente devido s limita es de acesso aos MBeans atrav s do servidor MBeans No en
65. iner o novo comportamento chamar um m todo no bus passando o nome de bean nome de m todo e argumentos e tipos de m todo O bus usa esta informa o para chamar o bean pelo cliente private final static String HRSERVICE HRService SuppressWarnings unchecked Set lt Employee gt listEmployees if useBus return Set lt Employee gt invoke HRSERVICE getEmployees new Object 3 new String else return manager getEmployees private Object invoke String serviceName String methodName Object args String types Object result null try result bus invoke serviceName methodName args types catch Throwable t t printStackTrace D return result O bus busca pela refer ncia inst ncia do bean nomeada e chama o m todo escolhido usando a reflex o O cliente nunca possui uma refer ncia inst ncia do bean portanto informado para acessar o servi o indiretamente Uma vez que o bus n o aplica o cache refer ncia voc pode realizar altera es configura o do servi o e pode ser reimplantado no per odo de execu o As chamadas subsequentes pelo cliente ser o usadas na nova refer ncia conforme o esperado O cliente e o servi o 31 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer foram desacoplados Este comportamento pode ser testado pela implanta o do servi o e pelo uso da op o p para imprimir o status
66. ioc autowire ShapesChecker gt Em ambos os casos ShapeUser e ShapeChecker apenas Circle dever ser usado uma vez que o Square exclu do no binding contextual 7 7 F brica de Bean Qu ando voc desejar mais de uma inst ncia de um bean em particular voc precisar usar o padr o de f brica do bean O trabalho do Microcontainer configurar e instalar a f brica de bean como se ele fosse um bean simples Depois disto voc precisa chamar o m todo createBean da f brica de bean Por padr o o Microcontainer cria uma inst ncia GenericBeanFactory mas voc pode configurar sua pr pria f brica A nica limita o que os ganchos de configura o a assinatura s o parecidos aquele do AbstractBeanFactory Exemplo 7 15 F brica de Bean Gen rica 62 lt bean name 0bject class java lang Object gt lt beanfactory name DefaultPrototype class org jboss demos ioc factory Prototype gt lt property name value gt lt inject bean 0bject gt lt property gt lt beanfactory gt lt beanfactory name EnhancedPrototype class org jboss demos ioc factory Prototype factoryClass org jboss demos ioc factory EnhancedBeanFactory gt lt property name value gt lt inject bean 0bject gt lt property gt lt beanfactory gt lt beanfactory name ProxiedPrototype class org jboss demos ioc factory UnmodifiablePrototype factoryClass org jboss demos ioc factory EnhancedBeanFactory gt lt property name v
67. lanta o Com o objetivo de realizar um trabalho real de implanta o voc deve primeiramente entender suas estruturas incluindo suas localiza es de metadados e classpaths As localiza es de metadados incluem os arquivos de configura o tais como my jboss beans xml web xml ejb jar xml Os classloader s o ra zes do classloader tais como WEB INF classes ou myapp ear 1lib Voc pode proceder com o manuseamento de implanta o atual tendo a estrutura em mente T pico Ciclo de vida de Implanta o 1 O MainDeployer passa a implanta o para determinar o conjunto de StructuralDeployers para reconhecimento e receber novamente o contexto de Implanta o 2 Em seguida o MainDeployer passa o contexto de Implanta o resultante ao Deployers para manuseio do Deployer apropriado Desta maneira o MainDeployer um agente com a responsabilidade de decidir quais Implantadores usar No caso da implanta o program tica ou virtual uma informa o existente StructureMetaData pr Manuseio da Informa o StructuredMetaData Implanta es baseadas no VFS O reconhecimento da estrutura enviado para um conjunto de StructureDeployers Estruturas definidas de especifica o JEE N s temos implementa es coincidentes de StructureDeployer EarStructure WarStructure 100 Cap tulo 10 Framework de Implanta o Virtual JarStructure DeclarativeStructures Procure pelo arquivo MET A INF jboss structure xm1 dent
68. legalStateException if the file is closed or it is a leaf node iar List lt VirtualFile gt getChildrenRecursively VirtualFileFilter filter throws IOException yee Visit the virtual file system param visitor the visitor throws IOException for any problem accessing the virtual file system throws IllegalArgumentException if the visitor is null throws IllegalStateException if the file is closed ae void visit VirtualFileVisitor visitor throws IOException Todas as opera es de Sistema de Arquivo apenas de leitura est o dispon veis al m de poucas op es de limpeza ou exclus o do recurso O manuseio de exclus o e limpeza necess rio quando manuseando com alguns arquivos tempor rios tais como os arquivos criados para o manuseio aninhado em jars Para alterar do manuseio de recurso File ou URL do JDK para o novo VirtualFile voc precisar de um VirtualFile raiz que fornecido pela classe VFS com a ajuda do URL ou par metro URI 79 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 8 3 Uso da Classe VFS 80 Cap tulo 8 Sistema de Arquivo Virtual public class VFS bows Get the virtual file system for a root uri param rootURI the root URI return the virtual file system throws IOException if there is a problem accessing the VFS throws IllegalArgumentException if the rootURL is null static VFS getVFS URI rootURI throws IOException
69. localhost source bash profile 6 Atualiza o do perfil do terminal gnome Usu rios do Linux Atualize o perfil do terminal para garantir que as intera es subsequentes do terminal gnome ou terminal Konsole leiam as novas vari veis do ambiente o o e Cap tulo 1 Pr requesitos para uso deste Guia Clique Edit Profiles Selecione Default e clique no bot o Edit No di logo Editing Profile clique no tab Title and Command Selecione a caixa de checagem Run command as login shell Encerre todas as caixas de di logo no Terminal 7 Verifique as altera es da vari vel do ambiente e instale o Maven Usu rios do Linux Abra um terminal e execute os seguintes comandos para verificar de que as altera es foram implementadas corretamente Execute o echo M2 HOME que deve retornar o resultado final localhost echo M2 HOME home username apache maven 2 2 1 t Execute o echo M2 que deve retornar o seguinte resultado localhost echo M2 home username apache maven 2 2 1 bin Execute o echo PATH e verifique se o diret rio Maven bin est inclu do localhost echo PATH home username apache maven 2 2 1 bin Execute o which mvn que deve exibir o caminho ao Maven execut vel localhost which mvn apache maven 2 2 1 bin mvn Execute o mvn version que deve exibir a vers o Maven referente vers o Java e informa o do sistema operacional localhost mvn version Apache Maven
70. m ria A pr xima abordagem deixa para tr s um grande n mero de arquivos tempor rios que devem ser invis veis ao usu rio final e portanto devem desaparecer ap s a desimplanta o Considere o seguinte cen rio um usu rio acessa a inst ncia VFS URL que aponta a um recurso aninhado A maneira com que o VFS deve manusear isto recriar o caminho por completo a partir do rascunho isto desempacotaria mais e mais os recursos aninhados Isto leva a um n mero grande de arquivos tempor rios O Microcontainer evita isto pelo uso do VFSRegistry VFSCache e TempInfo Quando voc perguntar pelo VirtualFile sobre VFS getRoot e n o o createNewRoot o VFS pergunta pela implementa o VFSRegistry para fornecer o arquivo O DefaultVFSRegistry existente checa primeiramente se existe uma raiz VFSContext existente para o URI fornecido Caso existir o DefaultVFSRegistry tenta primeiro navegar ao TempInfo existente link para arquivos existentes retornando navega o regular caso tal arquivo tempor rio n o existir Desta maneira voc usar completamente quaisquer arquivos tempor rios que j foram desempacotados economizando tempo e memoria do disco Caso nenhum VFSContext coincidente for encontrado no cache o c digo criar uma nova entrada e continuar com a navega o padr o A determina o de como o VFSCache manuseia as entradas do VFSContext com cache depende na implanta o usada O VFSCache configurado atrav s do V
71. minho de sua vari vel de ambiente JAVA HOME localiza o do JDK em seu sistema Usu rios do Windows Adicione as vari veis do ambiente M2 HOME M2 e JAVA HOME a Pressione Star t Pause Break A caixa de di logo das Propriedades de Sistema ser exibida b Clique no tab Advanced e clique no bot o Environment Variables c A partir do System Variables selecione Path d Clique Edit e acrescente dois caminhos Maven usando ponto e v rgula para separa o de cada entrada As aspas n o s o necess rias nos caminhos Adicione a vari vel M2 HOME e determine o caminho para o C Program Files Apache Software Foundation apache maven 2 2 1 Adicione a vari vel M2 e determine o valor para M2_HOME bin e No mesmo di logo crie a vari vel do ambiente JAVA HOME Adicione a vari vel JAVA_HOME e determine o valor para a localiza o de seu JDK Por exemplo C Program FileslJavaljdk1 6 0 02 f No mesmo di logo atualize ou crie a vari vel do ambiente do Caminho Adicione a vari vel 2 para permitir que o Maven seja executado da linha de comando Adicione a vari vel JAVA_HOME bin para determinar o caminho correta instala o do Java g Clique OK at que a caixa de di logo do System Properties encerre 5 Implementa o de altera es ao bash profile Usu rios do Linux Com o objetivo de atualizar as altera es realizadas no bash profile na sess o de terminal atual origine seu bash profile
72. mple service util AgeBasedSalaryStrategy gt lt property name minSalary gt 1000 lt property gt lt property name maxSalary gt 80000 lt property gt lt bean gt lt bean name LocationBasedSalary class org jboss example service util LocationBasedSalaryStrategy gt lt property name minSalary gt 2000 lt property gt lt property name maxSalary gt 90000 lt property gt lt bean gt gt lt deployment gt 1 Primeiro crie uma inst ncia java net URL chamada URL usando a inje o de par metro no construtor para especificar o arquivo humanResourcesService jar no sistema de arquivo local 2 A seguir crie uma inst ncia do URLClassLoader pela inje o do bean URK no construtor como o nico elemento na matriz 3 Inclua um elemento lt classloader gt em sua defini o de bean HRService e injete o bean customcL Isto especifica que a classe HRManager precisa ser carregada pelo customCL classloader Voc precisa decidir qual classloader usar para os outros beans na implanta o Todos os beans na implanta o usam o classloader do contexto do segmento atual Neste caso o segmento que manuseia a implanta o o segmento principal do aplicativo que possui o classloader de contexto determinado 34 Cap tulo 4 Uso de Servi os para o classloader do aplicativo na inicializa o Caso deseje voc pode especificar um classloader Exemplo 4 6 Especifica o de um Classloader Diferente lt xml versi
73. n true Method getSalary Args Santa Claus null Birth date unknown Return 10000 Method getEmployees Return Santa Claus 1 Reindeer Avenue Lapland City 25 12 1860 Method isHiringFreeze Return false Method getEmployees Return Santa Claus 1 Reindeer Avenue Lapland City 25 12 1860 Method getSalaryStrategy Para remover o comportamento de auditoria comentar os fragmentos relevantes do XML no descritor de implanta o e reiniciar o aplicativo A ordem de implanta o faz diferen a Cada aspect deve ser declarado antes dos bean a ser aplicado de forma que o Microcontainer os implementa naquela ordem Isto devido ao Microcontainer precisar alterar o c digo de byte da classe de bean normal para adicionar o cross cutting logic antes de criar uma inst ncia e armazenar uma refer ncia a mesma no controlador Isto n o ser poss vel caso uma inst ncia de bean normal j tenha sido criada 5 4 Retornos de Chamada do Ciclo de Vida Al m de aplicar os aspects aos beans que instanciamos usando o Microcontainer n s podemos adicionar tamb m o comportamento do processo de implanta o e desimplanta o Conforme entre eles 42 Cap tulo 5 Adi o de Comportamento ao AOP NOT INSTALLED o descritor de implanta o contendo o bean analisado juntamente com quaisquer anota es do pr prio bean DESCRIBED quaisquer depend ncias criadas pelo AOP foram adicionadas ao bean e anota es personali
74. ndom nextLong 101 Ap s adicionar os beans do chamador do executor voc poder observar os executores em a o Exemplo 7 13 Resultado do Log Executor JBoss MC Demo INFO 15 12 2008 13 57 39 StopWatch Invocation org jboss demos ioc annotations AnnotatedExecutor 4d28c7 start 1229345859234 JBoss MC Demo INFO 15 12 2008 13 57 39 StopWatch Invocation org jboss demos ioc annotations AnnotatedExecutor 4d28c7 time 31 JBoss MC Demo INFO 15 12 2008 13 57 39 StopWatch Invocation org jboss demos ioc annotations SimpleExecutor 1b044df start 1229345859265 JBoss MC Demo INFO 15 12 2008 13 57 39 StopWatch Invocation org jboss demos ioc annotations SimpleExecutor 1b044df time 47 t 7 6 Autowire 61 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 14 Inclus o e Exclus o com o Autowire lt bean name Square class org jboss demos ioc autowire Square autowire candidate false gt lt bean name Circle class org jboss demos ioc autowire Circle gt lt bean name ShapeUser class org jboss demos ioc autowire ShapeUser gt lt constructor gt lt parameter gt lt inject gt lt parameter gt lt constructor gt lt bean gt lt bean name ShapeHolder class org jboss demos ioc autowire ShapeHolder gt lt incallback method addShape gt lt uncallback method removeShape gt lt bean gt lt bean name ShapeChecker class org jboss demos
75. nfigura o program tica Para adicionar um implantador XML extenda o BasicBootstrap para criar uma classe e substituir o m todo bootstrap protegido conforme abaixo 21 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer public class EmbeddedBootstrap extends BasicBootstrap protected BasicXMLDeployer deployer public EmbeddedBootstrap throws Exception super public void bootstrap throws Throwable super bootstrap deployer new BasicXMLDeployer getKernel Runtime getRuntime addShutdownHook new Shutdown public void deploy URL url deployer deploy ur1 Rus public void undeploy URL url deployer undeploy ur1 E protected class Shutdown extends Thread public void run log info Shutting down deployer shutdown O gancho shutdown garante que quando o JVM sair todos os beans s o desimplantados de forma correta Os m todos deploy undeploy delegam ao BasicXMLDeployer de forma que os beans declarados no jboss beans xm1 podem ser implantados e desimplantados Finalmente as refer ncias ao controlador Microcontainer e bus s o restauradas de forma que voc pode pesquisar refer ncias de bean pelo nome e acess las diretamente ou indiretamente conforme necess rio 4 2 Implanta o do Servi o Ap s criar o cliente voc pode implantar o servi o de Recursos Humanos Isto feito pela entrada da op o d a partir do TUI A sa da indica
76. nota o texto que voc n o inseriu literalmente ou textos exibidos que mudam dependendo das circunst ncias Por exemplo Para conectar se uma m quina remota usando o ssh digite ssh nome do usu rioQ domain name na janela de comandos Por exemplo considere que a m quina remota seja example com e seu nome de usu rio nesta m quina seja john digite ssh john example com O comando mount o remount file system remonta o sistema de arquivo nomeado Por exemplo para remontar o sistema de arquivo home o comando mount o remount home Para ver a vers o de um pacote instalado use o comando rpm q package Ele retornar um resultado como este package version release Perceba as palavras em negrito e it lico acima username domain name file system package version e release Cada palavra um espa o reservado tanto para o texto que voc insere quando emitindo um comando ou para textos exibidos pelo sistema Al m de uso padr o para apresentar o t tulo de um trabalho os it licos denotam a primeira vez que um termo novo e importante usado Por exemplo O Publican um sistema de publica o do DocBook 1 2 Conven es de Pull Quote Resultado de terminal e listagem de c digo fonte s o definidos visualmente com base no contexto O resultado enviado um terminal configurado em Romano de Espa o nico Mono spaced Roman e apresentado assim books Desktop documentation drafts mss photos stuff svn books_te
77. novel em sua pasta de trabalho atual insira o comando cat my next bestselling novel na janela de solicita o e pressione Enter para executar o comando O comando acima inclui um nome de arquivo um comando de shell e uma tecla todos apresentados em Negrito Espa o nico Mono spaced Bold e todos distintos gra as ao conte do As combina es de tecla podem ser diferenciadas de uma tecla individual pelo sinal positivo que conecta cada parte da combina o da tecla Por exemplo Pressione Enter para executar o comando Pressione Ctr1 Alt F2 para trocar ao terminal virtual A primeira senten a destaca uma tecla espec fica a ser pressionada A segunda destaca duas combina es de teclas um conjunto de tr s teclas pressionadas simultaneamente Caso o c digo fonte seja discutido ser o apresentados como acima os nomes de classe m todos fun es nomes de variantes e valores retornados mencionados em um par grafo em Negrito de Espa o nico Mono spaced Bold Por exemplo Classes baseadas em arquivo incluem filesystem para sistemas de arquivo file para arquivos e dir para diret rios Cada classe possui seu conjunto pr prio de permiss es associadas Negrito Proporcional Esta representa as palavras e frases encontradas no sistema incluindo os nomes de aplicativos texto de caixa de di logo bot es rotulados caixa de sele o e r tulos de bot o de op o t tulos de menus e sub menus Por exemplo Pref ci
78. o Escolha Sistema Prefer ncias Mouse da barra do menu principal para lan ar Mouse Preferences Na aba Bot es selecione o Bot o da esquerda do mouse selecione a caixa e cliquem emFechar para mudar o bot o inicial do mouse da esquerda para a direita tornando o mouse adequado para o uso na m o esquerda Selecione Applications Accessories Character Map a partir da barra de menu principal com o objetivo de inserir um caractere especial ao arquivo gedit Em seguida selecione Search gt Find a partir da barra do menu Character Map digite o nome do caractere no campo Search e clique em Next O caractere pesquisado aparecer destacado no Character Table Clique duas vezes no caractere destacado para posicion lo no campo Text to copy e clique no bot o Copy Retorne ao seu documento e selecione Edit Paste a partir da barra do menu gedit O texto acima inclui nomes de aplicativos nomes de menu e itens de todo o sistema nomes de menu espec ficos do aplicativo e bot es e textos encontrados na Interface Gr fica GUI todos apresentados em Negrito Proporcional Proportional Bold e todos diferenciados de acordo com o contexto It lico em Negrito de Espa o nico Mono spaced Bold Italic ou It lico em Negrito Proporcional Proportional Bold Italic Sendo o Negrito Espa o nico Mono spaced Bold ou Negrito Proporcional Proportional Bold os it licos extras indicam textos substitu veis ou vari veis O It lico de
79. o JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Ao inv s de pesquisar imediatamente uma refer ncia para a inst ncia do bean a amostra primeiro pesquisa uma refer ncia para um ControllerContext e depois obt m uma refer ncia inst ncia do bean a partir do contexto usando o m todo getTarget O bean pode existir com o Microcontainer Estados do Bean com o Microcontainer NOT INSTALLED DESCRIBED INSTANTIATED CONFIGURED INSTALLED Para controlar qual estado o bean se encontra encapsule o mesmo em outro objeto chamando um context que descreve o mesmo estado atual O nome do contexto o mesmo do nome do bean Uma vez que o contexto alcan a o estado INSTALLED o bean que o representa considerado implantado Ap s criar uma refer ncia inst ncia do bean representando o ponto de entrada do servi o voc pode chamar m todos para executar o trabalho SuppressWarnings unchecked Set lt Employee gt listEmployees if useBus else return manager getEmployees O cliente est acessando o servi o diretamente uma vez que ele est usando uma refer ncia inst ncia do bean atual O desempenho bom uma vez que cada chamada de m todo vai diretamente ao bean No entanto o que aconteceria caso voc deseje configurar o servi o e reimplant lo enquanto o aplicativo estiver rodando A reconfigura o atingida pelas altera es realizadas ao descritor de implanta o XML e salvando o arq
80. o de arquivos de configura o mas o container solicitado para realizar a maioria do trabalho usando annotations Com o objetivo de obter informa o sobre o annotation os containers devem verificar as classes Esta verifica o cria uma desvantagem no desempenho Contanto para reduzir a quantia de verifica o o Microcontainer fornece outro gancho descritor por meio do jboss scanning xml 105 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 10 6 jboss scanning xml lt scanning xmins urn jboss scanning 1 0 gt lt path name myejbs jar gt lt include name com acme foo gt lt exclude name com acme foo bar gt lt path gt lt path name my war WEB INF classes gt lt include name com acme foo gt lt path gt lt scanning gt Estas amostras apresentam uma descri o simples dos caminhos relativos para inclus o ou exclus o quando verificando a Edi o Java Enterprise de vers o 5 ou maior anotada na informa o de metadados 106 Hist rico de Revis o Hist rico de Revis o Revis o 5 1 1 400 2013 10 31 R diger Landmann Rebuild with publican 4 0 0 Revis o 5 1 1 Fri Aug 31 2012 Leticia de Lima Translation files synchronised with XML sources 5 1 Revis o 5 1 Wed Sep 15 2010 Misty Stanley Jones JBPAPP 5076 Corre o de desigualdades entre amostras e seus textos N mero de vers o alterada na linha com as novas solicita es de vers o
81. o funcione voc deve primeiramente construir e instalar o auditAspect jar do diret rio examples User_Guide gettingStarted auditAspect usando o mvn install command Um numero de diferentes distribui es de cliente s o criadas incluindo uma baseada no AOP que baseia se no auditAspect jar sendo disponibilizado no reposit rio Maven local Caso seu mvn install digitado anteriormente do diret rio examples User Guide gettingStarted e o humanResourcesService jar e auditAspect jar j tenham sido constru dos e empacotados juntamente ao cliente este passo n o ser necess rio commandLineClient Procedimento 4 1 Compila o do C digo de Fonte 1 Rode as unidades de testes 2 Construa um JAR do cliente 3 Monte a distribui o contendo todos os arquivos necess rios Ap s compilar e empacotar o cliente a estrutura do diret rio no diret rio Exemplo 4 2 Sub diret rios do Diret rio commandLineClient target client pojo Usado para chamar o servi o sem o AOP client cl Usado para demonstrar os recursos do classloading client aop maiores detalhes Cada sub diret rio representa uma distribui o diferente com todos os scripts de chell JARs e descritores da implanta o XML necess rias para rodar o cliente em configura es diferentes O resto deste cap tulo usa a distribui o client pojo encontrada no sub diret rio client pojo que est 25 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do
82. omponente Seu c digo precisa determinar o mais cedo poss vel no processo se o implantador deve manusear a implanta o ou n o Exemplo 10 3 Implantador Simples que emite informa o sobre a pr pria Implanta o public class StdioDeployer extends AbstractDeployer public void deploy DeploymentUnit unit throws DeploymentException System out println Deploying unit unit Override public void undeploy DeploymentUnit unit System out println Undeploying unit unit Adicione esta descri o em um dos arquivos jboss beans xm1 no diret rio deployers do Servidor do Aplicativo JBoss e o MainDeployer Imp1 bean selecionar este implantador atrav s do manuseamento de retorno de chamada IoC do Microcontainer Exemplo 10 4 Descritor de Implanta o Simples lt bean name StdioDeployer class org jboss acme StdioDeployer gt 10 3 Controle de Fluxo Natural na forma de anexos O VDF inclui um mecanismo chamado attachments que facilita a passagem de informa o de um implantador a outro Os anexos s o implantados como java util Map levemente aprimorado sendo que cada entrada representa um anexo Alguns implantadores s o produtores enquanto outros s o consumidores O mesmo implantador pode executar tamb m ambas fun es Alguns implantadores criam metadados ou inst ncias de utilidade colocando as no mapa attachments Outros implantadores apenas declaram sua necessidade para estes anexos e puxam os
83. on 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 0rg 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer 2 0 xsd xmins urn jboss bean deployer 2 0 gt lt classloader gt lt inject bean customCL gt lt classloader gt lt bean name URL class java net URL gt lt constructor gt lt parameter gt file Users newtonm jbossmc microcontainer trunk docs examples User_G uide gettingStar ted commandLineClient target client cl dir otherLib humanResourcesService 1 0 0 jar lt parameter gt lt constructor gt lt bean gt lt bean name CustomCL class java net URLClassLoader gt lt constructor gt lt parameter gt lt array gt lt inject bean URL gt lt array gt lt parameter gt lt constructor gt lt bean gt lt deployment gt Isto seria necess rio para permitir a reconfigura o do servi o descomentando os beans AgeBasedSalary ou LocationBasedSalary Os classloaders especificados no nivel de bean substituem o classloader no nivel de implanta o Para substituir o classloader de uma s vez e usar o classloader padr o para um bean use o valor lt null gt como segue abaixo lt bean name HRService class org jboss example service HRManager gt lt classloader gt lt null gt lt classloader gt lt bean gt 4 5 1 Problemas com os Classloaders criados com os Descritores de Implanta o Caso voc crie um novo classloader para seu
84. onentes do Microcontainer s o manuseados por cada ponto de entrada nico ou m quina de estado nico As implanta es n o s o exce o Voc pode tirar vantagens deste recurso pelo uso do arquivo de configura o jboss dependency xml em suas implanta es Exemplo 10 5 jboss dependency xml lt dependency xmins urn jboss dependency 1 0 gt lt item whenRequired Real dependentState Create gt TransactionManager lt item gt 1 lt item gt my human readable deployment alias lt item gt 2 lt dependency gt Note as chamadas artificiais no XML 1 e 2 1 apresenta como descrever uma depend ncia em outro servi o Esta amostra requer que o TransactionManager seja recriado antes da implanta o estar no estado Real 2 um pouco mais complexo uma vez que est faltando informa o adicional Por padr o os nomes de implanta o dentro do Microcontainer s o nomes URI que pela digita o dos mesmos os fazem uma proposi o sujeita ao erro Portanto com o intuito de facilmente declarar uma depend ncia em outras implanta es voc precisar de um mecanismo alias para evitar os nomes URI Voc pode adicionar um arquivo de texto plano nomeado aliases txt em sua implanta o Cada linha do arquivo cont m um alias dando a um arquivo de implanta o um ou mais nomes simples usados para referencia o 10 6 Verifica o de Classes para Anota es As especifica es JEE atuais reduzem o n mer
85. or seguran a aplique o ServiceLocator padr o e use a classe para realizar pesquisas para os clientes Uma op o ainda melhor passar as refer ncias do bean justamente com seus nomes ao ServiceLocator no per odo de implanta o usando o ciclo de vida do retorno de chamada Neste cen rio o ServiceLocator pode observ los sem conhecimento do Microcontainer A desimplanta o remover subsequentemente as refer ncias do bean a partir do ServiceLocator para prevenir pesquisas futuras N o seria dif cil escrever sua pr pria implanta o do ServiceLocator A integra o de uma atual tal como JBoss Naming Service JBoss NS ainda mais r pida e possui um benef cio adicional de compilar a especifica o Java Naming e Directory Interface JNDI O Java JNDI ativa clientes para acessar diferentes e possivelmente m ltiplos servi os de nomea o usando um API comum 45 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Procedimento 5 3 Escrevendo sua pr pria Implanta o ServiceLocator 1 Primeiramente crie uma inst ncia do JBoss NS usando o Microcontainer 2 Em seguida adicione o retorno de chamada do ciclo de vida para binding e unbinding as refer ncias de bean durante a implanta o e desimplanta o 3 Marque as classes do bean que deseja realizar o bind nas refer ncias usando anota es 4 Agora voc pode localizar os beans no per odo de execu o usando a express o a
86. ories gt lt repository gt lt id gt snapshots jboss org lt id gt lt url gt http snapshots jboss org mavenZ lt url gt lt snapshots gt lt enabled gt true lt enabled gt lt snapshots gt lt repository gt lt repository gt lt id gt repository jboss org lt id gt lt url gt http repository jboss org mavenZ lt url gt lt snapshots gt lt enabled gt false lt enabled gt lt snapshots gt lt repository gt lt repositories gt lt pluginRepositories gt lt pluginRepository gt lt id gt repository jboss org lt id gt lt url gt http repository jboss org mavenZ lt url gt lt snapshots gt lt enabled gt false lt enabled gt lt snapshots gt lt pluginRepository gt lt pluginRepository gt lt id gt snapshots jboss org lt id gt lt url gt http snapshots jboss org mavenZ lt url gt lt snapshots gt lt enabled gt true lt enabled gt lt snapshots gt lt pluginRepository gt lt pluginRepositories gt lt profile gt lt profiles gt lt settings gt 1 3 Realizando o download das Amostras As amostras deste guia apresentam como criar um projeto maven que depende do JBoss Microcontainer usando Maven Voc pode realizar o download das mesmas a partir do conveni ncia Ap s voc ter realizado o download do arquivo ZIP contendo as amostras extraia o a uma localiza o conveniente e verifique as amostras para familiarizar se com sua estrutura 13 14 Plataforma do Aplicativo
87. os de acordo Para facilitar a defini o do ClassLoaders antes deles de fato existirem a abstra o inclui um modelo ClassLoadingMetaData O ClassLoadingMetaData pode ser exposto assim como o Objetivo Gerenciado com o novo servi o de perfil do JBoss EAP Isto ajuda os administradores de sistema a lidar com os detalhes de pol ticas mais abstratos ao inv s dos detalhes de implanta o 93 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 9 4 ClassLoadingMetaData Exposto como um Objeto Gerenciado public class ClassLoadingMetaData extends NameAndVersionSupport A Tile private fi ais private LTE private serialVersionUID static final long serialVersionUID classloading domain String domain parent domain String parentDomain 2 82951093046585620L Whether to make a subdeployment classloader a top level classloader private boolean topLevelClassLoader false Whether to enforce j2se classloading compliance private boolean j2seClassLoadingCompliance Whether we are cacheable private Whether we are blacklistable private a true boolean cacheable yg true boolean blackListable 7 Whether to export all 7 private ExportAll exportAll 7 Whether to import all private aie private A Tiles private fhe private ine private Pd Te private JO gos private A Tile private elie
88. os ioc annotations StopwWatchLog gt lt interceptor ref name StopwatchInterceptor gt lt bind gt lt interceptor gt public class StopwWatchInterceptor implements Interceptor public Object invoke Invocation invocation throws Throwable Object target invocation getTargetObject long time System currentTimeMillis log info Invocation target start time try return invocation invokeNext finally log info Invocation target time System currentTimeMillis time O Exemplo 7 anot a o XML apresentam algumas maneiras diferentes de implementar executores Exemplo 7 11 Executor anotado pela classe verdadeira lt bean name AnnotatedExecutor class org jboss demos ioc annotations AnnotatedExecutor gt public class AnnotatedExecutor implements Executor StopWatchLog lt Pointcut match public void execute throws Exception delegate execute 3 60 Cap tulo 7 Inje o de Depend ncia Avan ada e loC Exemplo 7 12 Executor simples com anota o XML lt bean name SimpleExecutor class org jboss demos ioc annotations SimpleExecutor gt lt annotation gt org jboss demos ioc annotations StopWatchLog lt annotation gt lt Pointcut match lt bean gt public class SimpleExecutor implements Executor private static Random random new Random public void execute throws Exception Thread sleep Math abs ra
89. plo a cria o de inst ncias das classes Employee e Address desnecess ria uma vez que o cliente as criam como resposta entrada do usu rio Elas continuam fazendo parte do servi o por m n o s o referenciadas no descritor da implanta o Comente seu c digo Voc pode definir beans com um descritor de implanta o contanto que cada um possua um nome nico que usado para executar inje o conforme acima No entanto todos os beans n o representam necessariamente servi os Enquanto um servi o pode ser implementado usando um bean nico beans m ltiplos s o normalmente usados juntos Um bean representa o ponto de entrada do servi o e cont m os m todos p blicos cnamados pelos clientes Neste exemplo o ponto de entrada o bean do HRService O descritor de implanta o XML n o indica se que o bean representa um servi o ou se um bean um ponto de entrada do servi o uma boa ideia usar coment rios e um esquema de nomea o para delinear beans de servi o a partir de beans sem servi o 3 5 Trabalhando com Servi os Ap s criar POJOs e conect los para formarem servi os voc precisa configurar servi os test los e empacot los 19 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer 3 5 1 Configura o de um Servi o Os servi os podem ser configurados por pelo menos duas maneiras Inje o de refer ncias entre inst ncias do POJO Inje o de valores nas
90. po de Recurso VirtualFile Cap tulo 8 Sistema de Arquivo Virtual 75 76 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usuario do JBoss Microcontainer public class VirtualFile implements Serializable k Get certificates return the certificates associated with this virtual file ie ee getCertificates LES Get the simple VF name X java return the simple file name throws IllegalStateException if the file is closed EA String getName Ir Get the VFS relative path name org jboss X java return the VFS relative path name throws IllegalStateException if the file is closed ys String getPathName Gf Co Get the VF URL file root org jboss X java return the full URL to the VF in the VFS throws MalformedURLException if a url cannot be parsed throws URISyntaxException if a uri cannot be parsed throws IllegalStateException if the file is closed ay URL toURL throws MalformedURLException URISyntaxException oe Get the VF URI file root org jboss X java return the full URI to the VF in the VFS throws URISyntaxException if a uri cannot be parsed throws IllegalStateException if the file is closed throws MalformedURLException for a bad url ae URI toURI throws MalformedURLException URISyntaxException fx When the file was last modified return the last modified time throws IOException for any problem accessing the virtual file system
91. propriedades do POJO Neste exemplo o segundo m todo usado O seguinte descritor da implanta o configura a inst ncia HRManager das seguintes maneiras Um congelamento oculto implantado O AgeBasedSalaryStrategy implementa valores m nimo e m ximo de sal rios A Inje o de refer ncias entre inst ncias de POJO uma maneira de configurar um servi o no entanto n s podemos injetar tamb m valores nas propriedades do POJO O seguinte descritor de implanta o demonstra como podemos configurar a inst ncia HRManager para ter um congelamento oculto e o AgeBasedSalaryStrategy para possuir os valores m nimo e m ximo de sal rio lt xml version 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer_2_0 xsd xmilns urn jboss bean deployer 2 0 gt lt bean name HRService class org jboss example service HRManager gt lt property name hiringFreeze gt false lt property gt lt property name salaryStrategy gt lt inject bean AgeBasedSalary gt lt property gt lt bean gt lt bean name AgeBasedSalary class org jboss example service util AgeBasedSalaryStrategy gt lt property name minSalary gt 1000 lt property gt lt property name maxSalary gt 80000 lt property gt lt bean gt lt deployment gt As classes devem possuir os m todos setter de forma que os valores sejam injetados Por exemplo
92. quais componentes fazem parte do ambiente e deixar o restante POJO Um Plain Old Java Object POJO um objeto Java reutiliz vel e modular O nome usado para enfatizar que um objeto gerado um Objeto Java comum e n o em particular um JavaBean Enterprise O termo criado por Martin Fowler Rebecca Parsons e Josh Mckenzie em setembro de 2000 durante uma conversa onde eles indicavam os diversos benef cios da codifica o de l gica comercial nos objetos java regulares ao inv s de usar os Beans de Entidade Java Bean Um Java Bean um componente de sofware reutiliz vel que pode ser manipulado visualmente numa ferramenta do construtor Um Java Bean um trecho de c digo independente Ele n o requerido na heran a de qualquer classe b sica particular ou interface Mesmo que os Java Beans sejam criados primeiramente em IDEs gr ficos eles podem tamb m ser desenvolvidos em editores de texto 15 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer simples AOP O Aspect Oriented Programming AOP um paradigma pelo qual fun es secund rias ou de suporte s o isoladas do programa principal de l gica comercial Ele um sub conjunto da programa o de objeto orientado 2 3 Isola o O Microcontainer parte integral da Plataforma Enterprise Maiores informa es sobre a instala o e configura o da Plataforma Enterprise podem ser encontradas no Guia de Administra o e
93. que o BasicXMLDeployer analisou o arquivo jboss beans xm1 usando o URL e instanciando os beans encontrados no mesmo K O Microcontainer est apto a instanciar os beans uma vez que suas classes est o dispon veis no classpath de extens o dentro do arquivo 1ib humanResourcesService jar Voc pode ainda substituir estas classes numa estrutura de diret rio destacada e adiciona lo ao classpath do aplicativo por m empacota los num JAR basicamente mais conveniente O descritor da implanta o totalmente separado do arquivo humanResourcesService jar Isto 28 Cap tulo 4 Uso de Servi os facilita a edi o disto para fins de teste O arquivo jboss beans xm1 no exemplo cont m alguns fragmentos comentados do XML que apresentam algumas das configura es poss veis lt xml version 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer 2 0 xsd xmIns urn jboss bean deployer 2 0 gt lt bean name HRService class org jboss example service HRManager gt lt lt property name hiringFreeze gt true lt property gt lt property name salaryStrategy gt lt inject bean AgeBasedSalary gt lt property gt gt lt bean gt lt lt bean name AgeBasedSalary class org jboss example service util AgeBasedSalaryStrategy gt lt property name minSalary gt 1000 lt property gt lt property name maxSalary
94. r Alguns testes tais como HRManager TestCase AgeBasedSalaryTestCase e LocationBasedSalaryTestCase testam a unidade individual dos POJOS Por outro lado outros testes tais como HRManager AgeBasedTestCase e HRManager LocationBasedTestCase testam a unidade de servi os por completo Em ambos Os casos Os testes s o rodados da mesma maneira O uso da classe MicrocontainerT est facilita a constru o e conduzem testes compreensivos de qualquer parte de seu c digo As classes Address e Employee n o s o testadas neste guia Fica ao seu crit rio test las 3 5 3 Empacotando um Servi o Ap s testar seu servi o conveniente empacot lo para que demais usu rios possam utiliz lo A maneira mais simples para realizar isto criar um JAR contendo todas as classes Voc pode escolher em incluir o descritor de implanta o caso haja uma maneira padr o sens vel para configurar o servi o mas isto opcional Procedimento 3 1 Empacotando um Servi o 1 Posicione o descritor da implanta o no diret rio META INF opcional Caso voc decida incluir o descritor de implanta o por acordo ele deve ser nomeado jboss beans xml e ser posicionado num diret rio MET A INF Este o layout padr o para a Plataforma Enterprise de forma que o implementador JAR reconhece este layout e automaticamente executa a implanta o O descritor da implanta o n o est incluso na amostra dos Recursos Humanos uma vez que o servi o confi
95. r deste processo voc n o exp e seu c digo aos detalhes de implementa o do Microcontainer public class BuilderUtil private KernelController controller Constructor public BuilderUtil Inject bean KernelConstants KERNEL_CONTROLLER_NAME KernelController controller this controller controller public void create throws Throwable BeanMetaDataBuilder builder BeanMetaDataBuilder createBuilder BUExample BuilderExample class getName builder addStartParameter Kernel class getName builder createInject KernelConstants KERNEL_NAME controller install builder getBeanMetaData public void destroy controller uninstall BUExample 3 7 9 ClassLoader Personalizado Voc pode definir um ClassLoader personalizado por bean no Microcontainer Quando definindo um classloader para toda a implanta o certifique se de n o criar uma depend ncia c clica por exemplo um classloader recentemente definido que depende no mesmo 66 Cap tulo 7 Inje o de Depend ncia Avan ada e loC Exemplo 7 18 Defini o do ClassLoader por Bean lt classloader gt lt inject bean custom classloader 0 0 0 gt lt classloader gt lt this will be explained in future article gt lt classloader name custom classloader xmlns urn jboss classloader 1 0 export all NON EMPTY import all true gt lt bean name CustomCL class org jboss demos ioc classloader CustomClassLoader gt lt cons
96. ra o AA Aten o Um Aviso n o deve ser ignorado Se voc ignorar avisos muito provavelmente perder dados 2 Obtendo Ajuda e Fornecendo Coment rios 2 1 Voc precisa de ajuda Caso encontre dificuldades com o procedimento descrito nesta documenta o voc pode encontrar oO Pref cio seguinte atrav s do portal do cliente realizar buscas ou navegar atrav s da base de conhecimento dos artigos de suporte t cnico sobre os produtos da Red Hat inserir o caso de suporte nos Servi os de Suporte Global da Red Hat GSS acessar outra documenta o da Red Hat A Red Hat acomoda um grande n mero de listas de correio eletr nico para discuss o de software e tecnologias da Red Hat Voc pode encontrar uma lista contendo as listas p blicas dispon veis em ou acessar o hist rico das listas 2 2 N s precisamos do seu Coment rio Caso voc encontre um erro de tipografia ou saiba uma melhor forma de escrever este guia n s queremos muito ouvir sua opini o Por favor submeta um relat rio em rela o ao produto JBoss Enterprise Application Platform 5 e ao componente doc JBoss Microcontainer User Guide O seguinte link o levar a um pr preenchimento deste Preencha o seguinte modelo no campo Description do Bugzilla Seja bastante espec fico na descri o do problema uma vez que isto nos ajudar a resolver o problema com maior agilidade URL do Documento Nome e N mero da se o Descri o do pro
97. reatePattern name for VirtualFile root roots RegexpVisitor visitor new RegexpVisitor root pattern root visit visitor urls addAll visitor getUrls private static class RegexpVisitor implements VirtualFileVisitor private VirtualFile root private Pattern pattern private Set lt URL gt urls new HashSet lt URL gt private RegexpVisitor VirtualFile root Pattern pattern this root root this pattern pattern public VisitorAttributes getAttributes return VisitorAttributes RECURSE LEAVES ONLY public void visit VirtualFile file try String path AbstractStructureDeployer getRelativePath root file Matcher matcher pattern matcher path if matcher matches 90 Cap tulo 9 A Camada ClassLoading urls add file toURL catch Exception e 3 J public Set lt URL gt getUrls throw new RuntimeException e return urls O RegexpClassLoaderPolicy usa um mecanismo simples para encontrar recursos de combina o As implanta es do mundo real podem ser mais compreensivas e elegantes public class RegexpService extends PrintService public void start throws Exception System out println ClassLoader cl getClass getClassLoader Enumeration lt URL gt urls cl getResources config 4 1 4 while urls hasMoreElements URL url urls nextElement print url openStream url toExternalForm O se
98. riar um novo classloader durante a implanta o do servi o carreg lo nas classes de servi o e criar inst ncias dos beans Consulte os conte dos do arquivo jboss beans xml para uma melhor ideia de como isto realizado 33 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer lt xml version 1 0 encoding UTF 8 gt lt deployment xmins xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation urn jboss bean deployer 2 0 bean deployer_2_0 xsd xmins urn jboss bean deployer 2 0 gt lt bean name URL class java net URL gt lt constructor gt lt parameter gt file Users newtonm jbossmc microcontainer trunk docs examples User_Gui de gettingStar ted commandLineClient target client cl dir otherLib humanResourcesService 1 0 0 jar lt parameter gt lt constructor gt lt bean gt lt bean name customCL class java net URLClassLoader gt lt constructor gt lt parameter gt lt array gt lt inject bean URL gt lt array gt lt parameter gt lt constructor gt lt bean gt lt bean name HRService class org jboss example service HRManager gt lt classloader gt lt inject bean customCL gt lt classloader gt lt lt property name hiringFreeze gt true lt property gt lt property name salaryStrategy gt lt inject bean AgeBasedSalary gt lt property gt gt lt bean gt lt lt bean name AgeBasedSalary class org jboss exa
99. ro de sua implanta o e analise o para construir um StructureMetaData apropriado FileStructures Apenas reconhece arquivos de configura o conhecidos tais como arquivos jboss beans xml ou service xml Exemplo 10 1 Uma amostra do jboss structure xml lt structure gt lt context comparator org jboss test deployment test SomeDeploymentComparatorTop gt lt path name gt lt metaDataPath gt lt path name META INF gt lt metaDataPath gt lt classpath gt lt path name lib suffixes jar gt lt classpath gt lt context gt lt structure gt No caso do EarStructure primeiro reconhe a uma implanta o de nivel superior e depois processe recursivamente as sub implanta es Voc pode implantar um StructureDeployer personalizado com a ajuda da classe GroupingStructure fornecida pela interface StructureDeployer Ap s ter reconhecido a estrutura de implanta o voc pode pass lo aos implantadores reais O Objeto dos Implantadores sabe como lidar com os implantadores reais usando um conjunto de implantadores por DeploymentStage 101 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 10 2 Est gios de Implanta o public interface DeploymentStages The not installed stage nothing is done here DeploymentStage NOT INSTALLED new DeploymentStage Not Installed The pre parse stage where pre parsing stuff can be prepared altDD I
100. roperty name mail gt lt value factory bean Binding method getPort gt lt parameter gt mail lt parameter gt lt parameter gt 25 lt parameter gt lt value factory gt lt property gt lt bean gt 55 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer valores atrav s da invoca o de m todo getPort Exemplo 7 2 PortsConfig public class PortBindingManager private Map lt String Integer gt bindings public PortBindingManager Map lt String Integer gt bindings this bindings bindings public Integer getPort String key return getPort key null public Integer getPort String key Integer defaultValue if bindings null return defaultValue Integer value bindings get key if value null return value if defaultValue null bindings put key defaultValue return defaultValue 7 2 Retornos de Chamada voc coletar todos os beans de um certo tipo e ainda um certo limite de n mero de combina o de beans um Parser que colecta todos os Editors 56 Cap tulo 7 Inje o de Depend ncia Avan ada e loC Exemplo 7 3 Retornos de chamada para Coletar e Filtrar Beans lt bean name checker class org jboss demos ioc callback Checker gt lt constructor gt lt parameter gt lt value factory bean parser method parse gt lt parameter gt lt array elementClass java lang Object gt lt value gt http www jboss org lt value g
101. rvi o regexp usa a express o regular padr o config 1 4 para listar recursos sob o diret rio config O comprimento do sufixo limitado de forma que os nomes do arquivo tais como excluded properties ser o ignorados 91 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 9 3 ClassLoaderPolicy com Suporte de Criptografia public class CrypterClassLoaderPolicy extends VFSClassLoaderPolicy private Crypter crypter public CrypterClassLoaderPolicy String name VirtualFile roots VirtualFile excludedRoots Crypter crypter super name roots excludedRoots this crypter crypter 3 Override public URL getResource String path try URL resource super getResource path return wrap resource catch IOException e throw new RuntimeException e Override public InputStream getResourceAsStream String path InputStream stream super getResourceAsStream path return crypter crypt stream Override public void getResources String name Set lt URL gt urls throws IOException super getResources name urls Set lt URL gt temp new HashSet lt URL gt urls size for URL url urls urls clear urls addAll temp temp add wrap url protected URL wrap URL url throws IOException return new URL url getProtocol url getHost url getPort url getFile new CrypterURLStreamHandler crypter J JA
102. ryEntry name injector getInstance key catch Exception ignored return entry 6 5 MBeans de Legacia e Mistura de Modelos de Componentes Diferentes A maneira mais simples de misturar modelos de conte dos diferentes pode ser encontrado no 51 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 6 7 Injetando o POJO em um MBean lt server gt lt mbean code org jboss demos models mbeans Pojo name jboss demos service pojo gt lt attribute name OtherPojo gt lt inject bean PlainPojo gt lt attribute gt lt mbean gt lt server gt Para implantar a implanta o MBeans atrav s do Microcontainer voc dever gravar um manuseador por completo para o modelo do componente Consulte system jmx beans xm1 para maiores detalhes O c digo deste arquivo mora no c digo de fonte do Servidor do Aplicativo JBoss sub projeto system jmx 6 6 Exposi o de POJOs como MBeans Exemplo 6 8 Exposi o de um POJO existente como um MBean lt deployment xmins urn jboss bean deployer 2 0 gt lt bean name AnnotatedJMXPojo class org jboss demos models jmx AtJmxPojo gt lt bean name Xm1JMXPojo class org jboss demos models mbeans Pojo gt lt annotation gt org jboss aop microcontainer aspects jmx JMX exposedInterface org jb oss demos models mbeans PojoMBean class registerDirectly true lt annotation gt lt bean gt lt bean name ExposedPojo class org jboss
103. s some AOP generated class bytes MemoryFileFactory putFile url bytes VirtualFile classFile VFS getVirtualFile new URL vfsmemory aopdomain org acme test Test class InputStream bis classFile openStream e g load class from input stream 8 4 Ganchos de Extensao f cil de estender o VFS com um novo protocolo simular o que n s fizemos com o Assembled e Memory Tudo o que voc precisa fazer uma combina o das implementa es VFSContexFactory VFSContext VirtualFileHandler FileHandlerPlugin e URLStreamHandler O VFSContextFactory trivial enquanto que outros dependem da complexidade de sua tarefa Voc pode implementar o acesso rar tar gzip ou mesmo o acesso remoto Ap s implementa o de um novo protocolo registre o novo VFSContextFactory com o VFSContextFactoryLocator 8 5 Recursos Um dos primeiros problemas que os desenvolvedores do Microcontainer encontraram foi o uso pr prio 84 Cap tulo 8 Sistema de Arquivo Virtual de recursos aninhados particularmente os arquivos jar aninhados Por exemplo as implanta es ear normais gema ear ui war WEB INF 1lib struts jar N s temos duas op es para ler conte dos do struts jar manuseio de recursos em mem ria criar c pias tempor rias do n vel superior de jars aninhados de forma recursiva A primeira op o f cil de implantar mas consume muita mem ria necessitando de aplicativos potencialmente grandes residam na me
104. s Throwable Set lt String gt strings new TreeSet lt String gt String CASE INSENSITIVE ORDER for Object element elements strings add element toString if expected equals strings false throw new IllegalArgumentException Illegal expected set expected strings J 7 3 Modo de Acesso do Bean Os campos do bean n o foram inspecionados com o BeanAccessMode padr o No entanto caso voc especifique um BeanAccess Mode diferente os campos s o acessados como parte das propriedades Exemplo 7 6 Defini es Poss veis do BeanAccessMode public enum BeanAccessMode STANDARD BeanInfoCreator STANDARD Getters and Setters FIELDS BeanInfoCreator FIELDS Getters Setters and fields without getters and setters ALL BeanInfoCreator ALL As above but with non public fields included No caso abaixo um valor de String configurado a um campo privado do String Exemplo 7 7 Configura o do BeanAccessMode lt bean name FieldsBean class org jboss demos ioc access FieldsBean access mode ALL gt lt property name string gt InternalString lt property gt lt bean gt Exemplo 7 8 Classe FieldsBean public class FieldsBean private String string public void start if string null throw new IllegalArgumentException Strings should be set 58 Cap tulo 7 Inje o de Depend ncia Avan ada e loC 7 4 Bean Alias Cada bean pode possuir qualquer n mero de al
105. s padr es no Microcontainer s o o que voc normalmente obt m de qualquer outro container Inversion of Control IoC e s o parecidos funcionalidade fornecida pelo MBeans incluindo as invoca es do m todo para opera es setters getters para atributos e depend ncias expl citas 6 2 Bean sem depend ncias para um POJO simples sem depend ncias Este o ponto de partida para a integra o do Microcontainer com o Spring ou Guice Exemplo 6 1 Descritor de Implanta o para o POJO Simples lt deployment xmins urn jboss bean deployer 2 0 gt lt bean name PlainPojo class org jboss demos models plain Pojo gt lt beanfactory name PojoFactory class org jboss demos models plain Pojo gt lt property name factoryClass gt org jboss demos models plain PojoFactory lt property gt lt beanfactory gt lt deployment gt 6 3 Usando o Microcontainer com o Spring 48 Cap tulo 6 Modelos de Componentes Exemplo 6 2 Descritor com o Suporte do Spring lt beans xmins urn jboss spring beans 2 0 gt lt Adding Spring annotation handler gt lt bean id SpringAnnotationPlugin class org jboss spring annotations SpringBeanAnnotationPlugin gt lt bean id SpringPojo class org jboss demos models spring Pojo gt lt beans gt Este namespace do arquivo diferente do arquivo do bean Microcontainer simples O namespace urn jboss spring beans 2 0 aponta para sua vers o da porta do esquema Spring
106. servi o usando o descritor de implanta o voc talvez n o esteja apto a acessar as classes carregadas pelo mesmo no classloader do aplicativo Na amostra do HRManager o cliente n o est mais apto a aplicar o cache numa refer ncia direta inst ncia do bean quando usando o controlador do Microcontainer Para ver este comportamento inicie o cliente usando o comando run sh e tente implantar o servi o 35 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Uma exce o java lang NoClassDefFoundError ser lan ada e o aplicativo ser encerrado Neste cen rio voc dever usar o bus para acessar o servi o indiretamente e fornecer acesso a quaisquer classes compartilhadas pelo cliente no classpath do aplicativo Neste exemplo as classes afetadas s o Address Employee e SalaryStrategy 36 Cap tulo 5 Adi o de Comportamento ao AOP Cap tulo 5 Adi o de Comportamento ao AOP O Object Oriented Programming OOP Programa o Orientada ao Objeto cont m diversas para t cnicas de software incluindo encapsulamento heran a e polimorfismo No entanto ele n o soluciona o problema de l gica de endere amento da qual normalmente repetida em diferentes classes Alguns exemplos incluem logging seguran a e l gica transacional sendo isto codificada em cada classe Este tipo de l gica chamada de cross cutting concern O Aspect Oriented Programming AOP Programa o Orienta
107. sts Desktop1 downloads images notes scripts svgs Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer As listas de c digo fonte tamb m s o configuradas em Romano de Espa o nico Mono spaced Roman por m s o apresentadas e real adas como a seguir package org jboss book jca ex1 import javax naming InitialContext public class ExClient public static void main String args throws Exception InitialContext iniCtx new InitialContext Object ref iniCtx lookup EchoBean EchoHome home EchoHome ref Echo echo home create System out println Created Echo System out printin Echo echo Hello echo echo Hello 1 3 Notas e Avisos E por fim usamos tr s estilos visuais para chamar a aten o para informa es que possam passar despercebidas Uma nota uma dica ou s mbolo ou ainda uma op o alternativa para a tarefa em quest o Se voc ignorar uma nota provavelmente n o resultar em m s consequ ncias por m poder deixar passar uma dica importante que tornar sua vida mais f cil Importante Caixas importantes detalham coisas que s o geralmente f ceis de passarem despercebidas mudan as de configura o que somente se aplicam sess o atual ou servi os que precisam ser reiniciados antes que uma atualiza o seja efetuada Se voc ignorar estas caixas importantes n o perder dados por m isto poder causar irrita o e frust
108. su rio e Uso do Servidor e Detalhes da Implementa o 10 5 M quina de Estado nico 10 6 Verifica o de Classes para Anota es Hist rico de Revis o x eee saite da ee gd Oe aes eee A wes a dle Aly 49 51 52 55 56 58 59 59 61 62 65 66 67 68 68 69 69 70 74 83 83 84 84 86 93 98 100 100 103 104 105 105 ndice Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Pref cio 1 Conven es de Documentos Este manual usa diversas conven es para destacar certas palavras e frases e chamar a aten o para informa es espec ficas conjunto de Fontes Liberation Fonts tamb m usado em formato HT ML caso o conjunto esteja instalado em seu sistema Caso ainda n o esteja como forma alternativa est o dispon veis tipos de letras equivalentes Nota O Red Hat Enterprise Linux 5 e vers es mais recentes do mesmo incluem o conjunto Liberation Fonts por padr o 1 1 Conven es Tipogr ficas S o usadas quatro conven es tipogr ficas para real ar palavras e frases espec ficas Estas conven es e circunst ncias a que se aplicam s o as seguintes Negrito Espa o nico Mono spaced Bold Usada para real ar entradas do sistema incluindo comandos de shell nomes de arquivos e caminhos S o tamb m usadas para real ar teclas Mai sculas Min sculas e as combina es de teclas Por exemplo Para ver o conte do do arquivo my next bestselling
109. t lt value gt SI lt value gt lt value gt 3 14 lt value gt lt value gt 42 lt value gt lt array gt lt parameter gt lt value factory gt lt parameter gt lt constructor gt lt bean gt lt bean name editorA class org jboss demos ioc callback DoubleEditor gt lt bean name editorB class org jboss demos ioc callback LocaleEditor gt lt bean name parser class org jboss demos ioc callback Parser gt lt incallback method addEditor cardinality 4 n gt lt uncallback method removeEditor gt lt bean gt lt bean name editorC class org jboss demos ioc callback LongEditor gt lt bean name editorD class org jboss demos ioc callback URLEditor gt Exemplo 7 4 Um Analisador para Coletar todos os Editores public class Parser private Set lt Editor gt editors new HashSet lt Editor gt public void addEditor Editor editor editors add editor public void removeEditor Editor editor editors remove editor Perceba que o incallback e uncallback usam o mesmo nome de m todo para combina o lt incallback method addEditor cardinality 4 n gt lt uncallback method removeEditor gt Um limite minimo controla quantos editores podem ajudar o bean a melhorar do estado Configurado cardinality 4 n gt 57 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 5 O Verificador do Analisador public void create throw
110. t resources Directory log4j properties org jboss example service HRManagerAgeBasedTestCase xm1 HRManager LocationBasedTestCase xml HRManager TestCase xml util AgeBasedSalaryTestCase xml LocationBasedSalaryTestCase xml Peele elie eee O c digo de teste est localizado no diret rio src test java Exemplo 3 2 Listagem do Diret rio src test java org jboss example service HRManager AgeBasedTestCase java HRManager LocationBasedTestCase java HRManager TestCase java HRManagerTest java HRManagerTestSuite java util AgeBasedSalaryTestCase java LocationBasedSalaryTestCase java SalaryStrategyTestSuite java eee A classe HRManagerTest extende o MicrocontainerTest como objetivo de determinar um n mero de funcion rios em uso como base para os testes Os casos de testes individuais dividem o HRManagerTest em subclasses para executar o trabalho atual Al m disso est o inclu das classes TestSuite que s o usadas para agrupar casos de testes individuais para melhor conveni ncia Com o objetivo de rodar testes entre o mvn test a partir do diret rio humanResourcesService Voc poder observar que alguns resultados de log DEBUG que apresentam o JBoss Microcontainer inicializando e implantando beans do arquivo XML relevante antes de rodar cada teste No final do teste os beans s o desimplantados e o Microcontainer encerrado 21 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontaine
111. tainer Sua para maiores informa es sobre o VFS 9 1 ClassLoader A implanta o ClassLoader suporta as pol ticas pugl veis a classe final sem mencionar que n o deve ser alterada Para gravar suas implanta es ClassLoader grave um ClassLoaderPolicy que fornece um API mais simples para carregamento de classes e recursos al m de especificar outras regras associadas com o classloader Para personalizar o classloading instancie o ClassLoaderPolicy e o registre com um ClassLoaderSystem para criar um ClassLoader personalizado Voc pode criar um ClassLoader Domain para a parti o do ClassLoaderSystem A camada ClassLoader tamb m inclui a implementa o de por exemplo modelo DelegateLoader classloading filtros de recurso e pol ticas de delega o pais filhos O per odo de execu o o JMX ativado para expor a pol tica usada para cada classloader Ele tamb m fornece as estat sticas do classloading e m todos de depura o para ajudar a determinar da onde vem o carregamento 86 Cap tulo 9 A Camada ClassLoading Exemplo 9 1 Classe ClassLoaderPolicy O ClassLoaderPolicy controla a maneira com que o seu classloading trabalha public abstract class ClassLoaderPolicy extends BaseClassLoaderPolicy public DelegateLoader getExported public String getPackageNames protected List lt extends DelegateLoader gt getDelegates protected boolean isImportA1l1 protected boolean isCacheable protected
112. talled public void uninstall ControllerContext ctx System out printin Bean ctx getName is being uninstalled 44 Cap tulo 5 Adi o de Comportamento ao AOP O m todo install chamado durante a implanta o do bean e o m todo uninstall durante a pr pria desimplementa o Mesmo que o comportamento tenha sido adicionado ao processo de implanta o e desimplanta o usando retornos de chamada o AOP n o usado aqui A funcionalidade pointcut expression do JBoss AOP usada para determinar quais classes de bean os comportamentos s o aplicados 5 5 Adi o das Pesquisas de Servi o atrav s do JNDI At agora voc usou o Microcontainer para refer ncias de pesquisa para inst ncias de bean que Exemplo 5 7 Pesquisando Refer ncias para Beans private HRManager manager private EmbeddedBootstrap bootstrap private Kernel kernel private KernelController controller private final static String HRSERVICE HRService Start JBoss Microcontainer bootstrap new EmbeddedBootstrap bootstrap run kernel bootstrap getKernel controller kernel getController ControllerContext context controller getInstalledContext HRSERVICE if context null manager HRManager context getTarget A distribui o das refer ncias de kernel para cada cliente que pesquisa um servi o um risco de seguran a pois fornece acesso configura o Microcontainer Para uma melh
113. tanto com o novo modelo de componente baseado no POJO diversos recursos novos e interessantes est o dispon veis Este cap tulo apresenta como voc pode aplicar os conceitos DI com a ajuda do JBoss Microcontainer Estes conceitos ser o expressados atrav s do c digo XML mas voc pode tamb m aplicar a maioria destes recursos usando anota es 7 1 F brica de valor A f brica de valor um bean que possui um ou mais m todos voltados gera o de valores para voc Exemplo 7 1 F brica de valor lt bean name Binding class org jboss demos ioc vf PortBindingManager gt lt constructor gt lt parameter gt lt map keyClass java lang String valueClass java lang Integer gt lt entry gt lt key gt http lt key gt lt value gt 80 lt value gt lt entry gt lt entry gt lt key gt ssh lt key gt lt value gt 22 lt value gt lt entry gt lt map gt lt parameter gt lt constructor gt lt bean gt lt bean name PortsConfig class org jboss demos ioc vf PortsConfig gt lt property name http gt lt value factory bean Binding method getPort parameter http gt lt property gt lt property name ssh gt lt value factory bean Binding method getPort parameter ssh gt lt property gt lt property name ftp gt lt value factory bean Binding method getPort gt lt parameter gt ftp lt parameter gt lt parameter gt 21 lt parameter gt lt value factory gt lt property gt lt p
114. teException if the file is closed 7 boolean isHidden throws IOException Ne TE Sap E A Access the file contents return an InputStream for the file contents throws IOException for any error accessing the file system throws IllegalStateException if the file is closed ir InputStream openStream throws IOException JE Do file cleanup e g delete temp files Es 77 18 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer void cleanup YES Close the file resources stream ee ay void close fa Delete this virtual file return true if file was deleted throws IOException if an error occurs wie boolean delete throws IOException Jos Delete this virtual file param gracePeriod max time to wait for any locks in milliseconds return true if file was deleted throws IOException if an error occurs ay boolean delete int gracePeriod throws IOException JaK Get the VFS instance for this virtual file return the VFS throws IllegalStateException if the file is closed aad VFS getVFS Ped E Get the parent return the parent or null if there is no parent throws IOException for any problem accessing the virtual file system throws IllegalStateException if the file is closed a VirtualFile getParent throws IOException Get a child param path the path return the child or lt code gt null lt code
115. tor implements InvocationHandler private Object target private SetterInterceptor Object target this target target public Object invoke Object proxy Method method Object args throws Throwable String methodName method getName if methodName startswith set throw new IllegalArgumentException Cannot invoke setters return method invoke target args 64 Cap tulo 7 Inje o de Depend ncia Avan ada e loC public class PrototypeCreator public void create throws Throwable ValueInvoker vii ValueInvoker bfDefault createBean vii setValue default ValueInvoker vi2 ValueInvoker enhanced createBean vi2 setValue enhanced ValueInvoker vi3 ValueInvoker proxied createBean try vi3 setValue default throw new Error Should not be here catch Exception ignored J 7 8 Construtor de Metadados de Bean Quando usando o Microcontainer em seu c digo use o BeanMetaDataBuilder para criar e configurar os metadados do bean 65 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 17 BeanMetaDataBuilder lt bean name BuilderUtil class org jboss demos ioc builder BuilderUtil gt lt bean name BuilderExampleHolder class org jboss demos ioc builder BuilderExampleHolder gt lt constructor gt lt parameter gt lt inject bean BUExample gt lt parameter gt lt constructor gt lt bean gt A parti
116. tructor gt lt parameter gt lt inject bean custom classloader 0 0 0 gt lt parameter gt lt constructor gt lt property name pattern gt org jboss demos ioc lt property gt lt bean gt lt bean name CB1 class org jboss demos ioc classloader CustomBean gt lt bean name CB2 class org jboss demos ioc classloader CustomBean gt lt classloader gt lt inject bean CustomCL gt lt classloader gt lt bean gt usa um ClassLoader que limita o escopo do pacote recarreg vel Exemplo 7 19 Teste do ClassLoader Personalizado public class CustomClassLoader extends ClassLoader private Pattern pattern public CustomClassLoader ClassLoader parent super parent public Class lt gt loadClass String name throws ClassNotFoundException if pattern null pattern matcher name matches return super loadClass name else throw new ClassNotFoundException Name name doesn t match pattern pattern 3 public void setPattern String regexp pattern Pattern compile regexp ii 7 10 Modo Controlador Por padr o o Microcontainer usa o AUTO modo controlador Ele empurra os beans t o distante quanto eles podem ir em rela o s depend ncias No entanto existe outros dois modos MANUAL e ON DEMAND Caso o bean esteja marcado como ON DEMAND ele n o seja usado ou instalado at que algum outro bean dependa explicitamente do mesmo No modo MANUAL o usu rio Microcontainer de
117. uivo Com o objetivo de reimplantar o servi o a inst ncia atual deve se desimplantada Durante a desimplanta o o controlador do Microcontainer libera suas refer ncias inst ncia do bean juntamente com quaisquer outros beans dependentes Estes beans subsequentemente ser o disponibilizados para a cole o de lixo uma vez que eles n o ser o mais solicitados pelo aplicativo A reimplanta o do servi o cria novas inst ncias de bean representando uma nova configura o Quaisquer pesquisas subsequentes dos clientes restaurar as refer ncias a estas novas inst ncias e elas estar o aptas a acessar o servi o reconfigurado O problema que a refer ncia inst ncia do bean representando nosso ponto de entrada do servi o sofre o cache quando voc implanta o servi o pela primeira vez A desimplanta o do servi o n o possui efeito uma vez que a inst ncia do bean pode ser acessada usando a refer ncia com cache e n o ser coletada como lixo at que o cliente a libere Al m disso a implanta o do servi o n o causar outra busca uma vez que o cliente j possui uma refer ncia com cache Portanto ela continuar a usar a inst ncia de bean representando a configura o de servi o inicial Voc pode testar este comportamento digitando u seguido por RETURN para desimplantar o servi o atual Voc dever estar apto a acessar o servi o a partir do cliente mesmo que ele esteja desimplantado Em seguida realize altera
118. ver mover o bean adiante e de volta juntamente com o in cio do estado 67 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer Exemplo 7 20 Modo Controlador do Bean lt bean name OptionalService class org jboss demos ioc mode OptionalService mode 0n Demand gt lt bean name OptionalServiceUser class org jboss demos ioc mode OptionalServiceUser gt lt bean name ManualService class org jboss demos ioc mode ManualService mode Manual gt lt bean name ManualServiceUser class org jboss demos ioc mode ManualServiceUser gt lt star t gt lt parameter gt lt inject bean ManualService fromContext context state Not Installed gt lt parameter gt lt start gt lt bean gt Voc pode injetar beans como tamb m suas representa es do componente n o modificado da representa o do componente Microcontainer usando o atributo fromContext da classe inject A revis o do c digo do OptionalServiceUser e ManualServiceUser serve para mostrar como usar o Microcontainer API para o manuseio do bean ON DEMAND e MANUAL 7 11 Ciclo Os beans podem ser dependentes entre si ao inv s de um ciclo Por exemplo A depende de B na constru o mas B depende de A no setter Esta situa o pode ser resolvida com facilidade uma vez que a separa o do ciclo de vida do estado fino granulado do Microcontainer Exemplo 7 21 Separa o do Ciclo de Vida do Bean lt bean
119. vimento O objetivo que clientes apenas vejam um API de Desenvolvimento enquanto desenvolvedores vejam um DeploymentUnit Os detalhes da implementa o do servidor podem ser encontradas no DeploymentContext Apenas a informa o necess ria est exposta a um n vel particular de ciclo de vida da implanta o Os componentes j foram mencionados como parte do manuseio de hierarquia dos implantadores Enquanto a implanta o de n vel superior e sub implantadores uma representa o natural da hierarquia de estrutura da implanta o os componentes s o um novo conceito VDF A ideia dos componentes que eles tenham um mapeamento 1 1 com o ControllerContexts dentro do maiores informa es sobre este respeito Por que Mapa de Componentes 1 1 como ControllerContexts Nomea o O nome das unidades de componente do nome ControllerContext get Scope and get MetaData Retorna o mesmo contexto MDR que ser usado pelo Microcontainer quela inst ncia IncompleteDeploymentException IDE Com o objetivo do IDE imprimir quais depend ncias faltam para a implanta o ele precisa saber os nomes do ControllerContext Ele encontra o nome pela cole o dos nomes DeploymentUnit do Componente nos Implantadores do Componente que os especificam tais 104 Cap tulo 10 Framework de Implanta o Virtual como BeanMetaDataDeployer ou o m todo setUseUnitName no AbstractRealDeployer 10 5 M quina de Estado nico Todos os comp
120. zadas s o processadas INSTANTIATED uma inst ncia de bean criada CONFIGURED propriedades foram injetadas no bean juntamente com quaisquer refer ncias a outros beans CREATE o m todo create caso definido no bean chamado START o m todo start caso definido no bean chamado INSTALLED quaisquer a es de instala o personalizada que foram definidas no descritor de implanta o foram executadas e o bean est pronto para acesso OP importante P Importante Os estados CREATE e START s o inclusos para prop sitos de legacia Isto permite servi os que foram implementados como MBeans em vers es anteriores da Plataforma Enterprise para funcionarem corretamente quando implantados como beans na Plataforma Enterprise 5 1 Caso voc defina quaisquer m todos criar iniciar em seu bean este processo passar direto atrav s destes estados Estes estados representam o ciclo de vida do bean Voc pode definir um n mero de retornos de chamada a qualquer instante usando um conjunto adicional de elementos lt aop gt lt aop lifecycle describe gt aplicado quando entrando deixando o estado DESCRIBED lt aop lifecycle instantiate gt aplicado quando entrando deixando o estado INST ANT IAT ED lt aop lifecycle configure gt aplicado quando entrando deixando o estado CONFIGURED 43 Plataforma do Aplicativo JBoss Enterprise 5 Guia do Usu rio do JBoss Microcontainer lt aop lifecycle create gt aplicado quando entr

Download Pdf Manuals

image

Related Search

Related Contents

LevelOne MDU-0025USB  Arat NS1600.2 holder    設定解説書 - 株式会社ビー・ユー・ジーSST  Wayne 332200-001 User's Manual  rear seat entertainment system user guide  技術資料/インフォメーション  

Copyright © All rights reserved.
Failed to retrieve file