Princípios da customização do Liferay Portal. Os slides apresentam as diferentes estratégias de customização do Liferay, o processo de preparação do ambiente de desenvolvimento e um breve exemplo de construção de portlet através do Liferay Plugins SDK.
6. Interessado?
o/
sea@seatecnologia.com.br
5
Monday, December 7, 2009
7. Criar páginas, configurar layouts, distribuir
portlets é apenas a ponta do iceberg...
6
Monday, December 7, 2009
8. Há inúmeras outras possibilidades para
customização do Liferay.
http://www.flickr.com/photos/stephenpoff/2761284719/in/set-72157594345940394/ 7
Monday, December 7, 2009
9. O Liferay possui vários níveis de customização.
Customização
Liferay
Extension Código
Plugins
Environment Fonte
Portlets Temas Layouts
8
Monday, December 7, 2009
10. O Liferay possui vários níveis de customização.
A primeira Customização
estratégía é através de
Liferay
plugins
Extension Código
Plugins
Environment Fonte
Plugins são componentes WAR, facilmente
Portlets Temas Layouts organizáveis em repositórios.
8
Monday, December 7, 2009
11. O Liferay possui vários níveis de customização.
Quando não Customização
resolver com plugins,
Liferay
vá de EXT
Extension Código
Plugins
Environment Fonte
O ambiente de extensão é mais poderoso
Portlets Temas Layouts que plugins, porém, mais instrusivo.
8
Monday, December 7, 2009
12. O Liferay possui vários níveis de customização.
Em último caso,
Customização modifique o código fonte
Liferay original
Extension Código
Plugins
Environment Fonte
Modificações no código fonte, apesar de
Portlets Temas Layouts não imporem limites na customização,
prejudicam a evolução para novas versões.
8
Monday, December 7, 2009
13. Focaremos na customização por plugins.
Customização
Liferay
Extension Código
Plugins
Environment Fonte
Portlets Temas Layouts
9
Monday, December 7, 2009
14. Criação de Plugins
temas, layouts e portlets
http://www.flickr.com/photos/stephenpoff/2874657376/in/set-72157594345940394/ 10
Monday, December 7, 2009
15. pré-reqs
Para iniciar o desenvolvimento de plugins,
alguns pré-requisitos são necessários 11
Monday, December 7, 2009
16. pré-reqs
Para iniciar o desenvolvimento de plugins,
alguns pré-requisitos são necessários 11
Monday, December 7, 2009
17. pré-reqs
Para iniciar o desenvolvimento de plugins,
alguns pré-requisitos são necessários 11
Monday, December 7, 2009
18. Na página de download
do Liferay, existe um link
‘Additional Files’
12
Monday, December 7, 2009
19. Baixe o
Liferay Plugins SDK
Text 13
Monday, December 7, 2009
20. Baixe o
Liferay Plugins SDK
Text 13
Monday, December 7, 2009
21. Descompacte o Plugins
SDK e veja a seguinte
estrutura de diretórios.
14
Monday, December 7, 2009
22. Crie o arquivo
build.${usuario}.properties...
onde ${usuario} é o nome do usuário
logado na máquina
15
Monday, December 7, 2009
23. Configure no Plugin SDK o
caminho do servidor Tomcat
sobre o qual seu Liferay está
sendo executado.
16
Monday, December 7, 2009
24. Portlets primeiros passos...
Monday, December 7, 2009
25. Acesse a pasta ‘portlets’
do Plugin SDK...
/liferay/liferay-plugins-sdk-5.2.3/portlets $ ./create.sh hello-liferay "Hello Liferay"
Buildfile: build.xml
create:
[unzip] Expanding: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/
portlets/portlet.zip into /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet
[mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
[copy] Copying 6 files to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
BUILD SUCCESSFUL
Total time: 6 seconds
18
Monday, December 7, 2009
26. ...e utilize o script para
criação de um novo
portlet...
/liferay/liferay-plugins-sdk-5.2.3/portlets $ ./create.sh hello-liferay "Hello Liferay"
Buildfile: build.xml
create:
[unzip] Expanding: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/
portlets/portlet.zip into /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet
[mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
[copy] Copying 6 files to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
BUILD SUCCESSFUL
Total time: 6 seconds
18
Monday, December 7, 2009
27. ...informando o nome do
projeto...
/liferay/liferay-plugins-sdk-5.2.3/portlets $ ./create.sh hello-liferay "Hello Liferay"
Buildfile: build.xml
create:
[unzip] Expanding: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/
portlets/portlet.zip into /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet
[mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
[copy] Copying 6 files to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
BUILD SUCCESSFUL
Total time: 6 seconds
18
Monday, December 7, 2009
28. ...e o nome do portlet.
/liferay/liferay-plugins-sdk-5.2.3/portlets $ ./create.sh hello-liferay "Hello Liferay"
Buildfile: build.xml
create:
[unzip] Expanding: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/
portlets/portlet.zip into /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet
[mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
[copy] Copying 6 files to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
BUILD SUCCESSFUL
Total time: 6 seconds
18
Monday, December 7, 2009
30. /liferay/liferay-plugins-sdk-5.2.3/portlets/hello-liferay-portlet $ ant deploy
Buildfile: build.xml
compile:
merge: Faça o deploy automático
[javac] Compiling 1 source file to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
do portlet no Liferay
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/classes
configurado no arquivo
merge: build.${usuario}.properties
war:
[mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/dist
clean-portal-dependencies:
[zip] Building zip: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/dist/
hello-liferay-portlet-5.2.3.1.war
deploy:
[copy] Copying 1 file to /liferay/liferay-portal-5.2.3/deploy
BUILD SUCCESSFUL
Total time: 24 seconds
20
Monday, December 7, 2009
31. 13:38:16,945 INFO [AutoDeployDir:183] Processing hello-liferay-portlet-5.2.3.1.war
13:38:19,275 INFO [PortletAutoDeployListener:77] Copying portlets for /Users/alegomes/sea/edu/
liferay/apps/liferay-portal-5.2.3/deploy/hello-liferay-portlet-5.2.3.1.war
(...)
13:39:03,603 INFO [PortletAutoDeployListener:87] Portlets for /Users/alegomes/sea/edu/liferay/apps/
liferay-portal-5.2.3/deploy/hello-liferay-portlet-5.2.3.1.war copied successfully. Deployment will start in a
few seconds.
13:40:40,919 INFO [PortletHotDeployListener:227] Registering portlets for hello-liferay-portlet
13:40:41,587 INFO [PortletHotDeployListener:346] 1 portlet for hello-liferay-portlet is
available for use
Acompanhe o
resultado do
deploy no log do
servidor Liferay.
21
Monday, December 7, 2009
32. Verifique a presença
do portlet no
diretório de deploy
do Liferay
Portlet
deployado!
22
Monday, December 7, 2009
33. Nosso
portlet!
Acesse a interface web
do portal e verifique a
presença do portlet na
lista de portlets
disponívéis no servidor.
23
Monday, December 7, 2009
47. Adicionar
diretório de
classes
35
Monday, December 7, 2009
48. Adicionar
diretório de
classes
35
Monday, December 7, 2009
49. Diretório de
classes
adicionado às
libs do projeto
de portlet
36
Monday, December 7, 2009
50. Acabaram os
problemas.
37
Monday, December 7, 2009
51. Código Java
do portlet
38
Monday, December 7, 2009
52. Código JSP
do portlet
39
Monday, December 7, 2009
53. Não se iluda
achando que já sabe tudo
http://www.flickr.com/photos/purplemattfish/3404482191/ 40
Monday, December 7, 2009
54. Invista alguns
tomates* para
dominar a teoria
dos portlets
* The Pomodoro Technique
http://www.flickr.com/photos/stephenpoff/158536767/in/set-72157594345940394/ 41
Monday, December 7, 2009
55. e por falar em tomates...
Suponha que
portlets sejam
tomates
http://www.flickr.com/photos/darwinbell/387755335/ 42
Monday, December 7, 2009
56. Tomates são guardados
em caixas.
http://www.flickr.com/photos/chrismar/3631784233/ 43
Monday, December 7, 2009
57. Tomates têm um
ciclo de vida
muito bem
definido.
eles
nascem...
http://www.flickr.com/photos/urbanislands/3876172828/ 44
Monday, December 7, 2009
63. Entenda a lógica da programação orientada a
componentes do mundo Java
http://www.flickr.com/photos/jp_math54/3819628579/ 50
Monday, December 7, 2009
65. componente é uma peça
independente de software
http://www.flickr.com/photos/19684903@N00/346425180/ 51
Monday, December 7, 2009
66. componente é uma peça
independente de software
todo componente tem um
ciclo de vida bem definido
http://www.flickr.com/photos/19684903@N00/346425180/ 51
Monday, December 7, 2009
67. componente é uma peça
independente de software
todo componente tem um
ciclo de vida bem definido
o ciclo de vida de um
componente é gerenciado
por um container
http://www.flickr.com/photos/19684903@N00/346425180/ 51
Monday, December 7, 2009
68. componente é uma peça
independente de software
todo componente tem um
ciclo de vida bem definido
o ciclo de vida de um
componente é gerenciado
por um container
a cada transição entre
fases do ciclo de vida,
um método do
http://www.flickr.com/photos/19684903@N00/346425180/
componente é chamado 51
Monday, December 7, 2009
71. componente são empacotados
cada tipo de componente possui seu
próprio tipo de pacote
WAR, JAR, EAR, SAR, RAR...
http://www.flickr.com/photos/19684903@N00/346425180/ 52
Monday, December 7, 2009
72. componente são empacotados
cada tipo de componente possui seu
próprio tipo de pacote
WAR, JAR, EAR, SAR, RAR...
num pacote de componentes há
classes + recursos + descritor
http://www.flickr.com/photos/19684903@N00/346425180/ 52
Monday, December 7, 2009
73. componente são empacotados
cada tipo de componente possui seu
próprio tipo de pacote
WAR, JAR, EAR, SAR, RAR...
num pacote de componentes há
classes + recursos + descritor
cada tipo de pacote possui
seu próprio descritor
web.xml, ejb-jar.xml, enterprise.xml, -service.xml
http://www.flickr.com/photos/19684903@N00/346425180/ 52
Monday, December 7, 2009
74. Para fazer uma Applet, uma Servlet ou um Midlet...
53
Monday, December 7, 2009
80. O container, responsável pelo ciclo de vida dos
componentes, notifica-os por meio de métodos de callback
sempre que houver uma transição de estado.
59
Monday, December 7, 2009
81. No fundo, é tudo a mesma coisa.
60
Monday, December 7, 2009
82. Inclusive
portlets
61
Monday, December 7, 2009
83. Inclusive
portlets
Invocado pelo container
quando alguma submissão
de dados é feita ao
componente.
61
Monday, December 7, 2009
84. Inclusive
portlets
Invocado pelo container quando
há a necessidade de reconstruir
a visualização do componente
61
Monday, December 7, 2009
87. portlet
componente de software que gera
fragmentos HTML
em um portal
http://www.flickr.com/photos/spisharam/2742433355/ 64
Monday, December 7, 2009
88. portlet container
ambiente gerenciador de
portlets e seus ciclos de vida
http://www.flickr.com/photos/fensterbme/241478156/ 65
Monday, December 7, 2009
89. Portlets
geram fragmentos de
HTML
portlets são agrupados
em pacotes
WAR
pacotes WAR são deployados em
Portlet Containers 66
Monday, December 7, 2009
90. um pacote WAR de portlets contém...
my-portlet.war
Classes + Recursos + Descritor
67
Monday, December 7, 2009
91. Descritores podem ser...
Padrões
web.xml
portlet.xml
my-portlet.war Proprietários
liferay-portlet.xml
liferay-display.xml
68
Monday, December 7, 2009
92. O mais importante é se lembrar que
portlets ≠ servlets
69
Monday, December 7, 2009
93. Portlets têm
modos
definem a função do portlet no instante
Monday, December 7, 2009