Este artigo irá demonstrar passo-a-passo como criar uma aplicação utilizando o Framework Spring MVC 3 no servidor OpenShift.
Antes de iniciar este tutorial, é necessário que já tenha criado sua conta no openshift.redhat.com.
Vamos utilizar as seguintes ferramentas para nosso ambiente de desenvolvimento:
- Eclipse Juno EE (http://www.eclipse.org/downloads/)
- JBossTools 4.0 (https://www.jboss.org/tools/download/dev/4_0)
1) Inicie o Eclipse e faça a instalação do Jboss Tools. Vá ao menu: Help > Install New Software …
- Clique em add…
- Selecione o arquivo zip que baixou do Jboss Tools
- Clique em next para prosseguir com a instalação, ate chegar na tela descrita abaixo:
Agora basta somente finalizar a instalação.
2) O próximo passo será criar uma chave RSA para fazer o deploy da aplicação de exemplo que iremos criar.
- Acesse o menu: Window > Preferences
- Com a janela de preferencias ainda aberta, acesse: General > Network Connection > SSH2
- Clique na aba Key Management e depois no botão Generate RSA Key …
- Copie o código da chave
- Agora clique no botão Save Private Key, em seguida Ok conforme imagem abaixo:
3) Agora devemos colar a chave gerada pelo eclipse em sua conta do openShift.
- Acesse seu painel no site do openShift.
- Clique em My account e clique no botão Add a new Key conforme imagem:
4) Agora vamos iniciar a criação de nossa aplicação de exemplo com Spring Framework.
- Clique em: File > New Other > OpenShift Application conforme imagem abaixo:
5) Inserir usuário e senha de acesso após ter clicado em next:
6) Agora insira o nome da aplicação springmvc3 conforme a imagem:
7) Prossiga com a configuração de criação de um novo projeto:
8) Selecione o repositório local do git:
9) Agora basta finalizar a criação do projeto. Será criado uma estrutura conforme a imagem:
10) Acesse novamente seu painel no site do openShift e veja a aplicação de teste criada:
11) Agora acesse sua aplicação pela url que foi gerada, obtenha a seguinte tela:
12) Vamos modificar o projeto de teste criado e em fim iniciar a criação de nossa aplicação uttilizando Spring Framework.
Delete os seguintes arquivos do projeto criado:
- health.jsp
- Diretório images
- index.html
- snoop.jsp
- faces-config.xml (em WEB-INF)
Confira a imagem com os arquivos mencionados que serão deletados:
13) Agora vamos deletar a servlet que está no arquivo web.xml (Delete somente o que está selecionado conforme imagem abaixo):
14) Vamos adicionar as dependências do spring framework no pom.xml, a estrutura deve ficar assim:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springmvc3</groupId> <artifactId>springmvc3</artifactId> <packaging>war</packaging> <version>1.0</version> <name>springmvc3</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> <spring.version>3.0.6.RELEASE</spring.version> </properties> <dependencies> <!-- Jboss --> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency> <!-- Spring Framework --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> </dependencies> <profiles> <profile> <!-- When built in OpenShift the 'openshift' profile will be used when invoking mvn. --> <!-- Use this profile for any OpenShift specific customization your app will need. --> <!-- By default that is to put the resulting archive into the 'deployments' folder. --> <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html --> <id>openshift</id> <build> <finalName>springmvc3</finalName> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <outputDirectory>deployments</outputDirectory> <warName>ROOT</warName> </configuration> </plugin> </plugins> </build> </profile> </profiles> <!-- Repositories --> <repositories> <!-- Spring Releases --> <repository> <id>com.springsource.repository.bundles.release</id> <name>Spring Release Repository</name> <url>http://maven.springframework.org/release</url> </repository> <!-- Spring Milestones --> <repository> <id>spring-milestone</id> <name>Spring Framework Maven Milestone Repository</name> <url>http://maven.springframework.org/milestone</url> </repository> <!-- JBoss, Hibernate --> <repository> <id>jboss-public-repository-group</id> <name>JBoss Maven Repository</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>com.springsource.repository.bundles.release</id> <name>Spring Release Repository</name> <url>http://maven.springframework.org/release</url> </pluginRepository> <pluginRepository> <id>com.springsource.repository.bundles.milestone</id> <name>Spring Milestone Repository</name> <url>http://maven.springframework.org/milestone</url> </pluginRepository> </pluginRepositories> </project>
15) Agora que já adicionamos as dependências necessárias do Spring, vamos configurar os arquivos xml’s para que o mecanismo do Spring funcione.
Abra seu arquivo web.xml e adicione o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="false"> <!-- Declaracao do servlet do Spring MVC abaixo --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-context.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
Agora crie um arquivo chamado spring-context.xml em WEB-INF, adicione o seguinte conteúdo:
</pre> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="br.com.app" /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
Crie um diretório chamado views em WEB-INF.
Agora crie uma página chamada hello.jsp dentro da pasta views que acabou de criar e insira o seguinte conteúdo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>SpringMVC-3</title> </head> <body> <h3>Olá Mundo com Spring MVC 3</h3> <hr /> <tt>Teste com Spring MVC 3 realizado com sucesso !!!</tt> <p><a href="index.jsp">Página inicial</a></p> </body> </html>
Crie uma página chamada index.jsp no diretório webapp com o seguinte conteúdo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>SpringMVC-3</title> </head> <body> <h3>Bem vindo a página inicial</h3> <hr /> <tt>A finalidade deste projeto é testar o Spring MVC 3.</tt> <p><a href="olaMundoSpring">Testar um @RequestMapping</a></p> </body> </html>
16) Vamos criar a classe controller que será responsável pelo redirecionamento de nossa requisição de teste com o Spring.
Crie um pacote chamado: br.com.app em Java Resources (src/main/java)
Crie uma classe chamada AppController no pacote criado e insira o seguinte conteúdo:
package br.com.app; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class AppController { @RequestMapping("/olaMundoSpring") public String execute(){ return "hello"; } }
17) Nossa aplicação de teste com o spring está quase pronta.
Clique com o botão direito em cima do projeto, vá no menu Maven e clique em Update Project… (Esse passo é necessário para que todas as dependências do maven sejam baixadas). Em seguida clique novamente como botão direito em cima do projeto para ir na opção Team.
Agora vamos fazer o commit de nossas páginas e arquivos de configuração. (Não se esqueça de selecionar os arquivos que criou) confira a imagem:
Selecione os arquivos e insira a mensagem de log:
18) Agora vamos fazer o deploy de nosso projeto, siga os passos da imagem abaixo e clique em Finish (Botão direito no projeto > Team > Remote > Push):
19) Por fim, basta acessar novamente o link de seu projeto conforme o passo 11, terá como resultado a seguinte tela:
20) E para finalizar, faça o teste clicando no link para testar um requestMapping, será direcionado para seguinte tela:
Parabéns, seu projeto de teste com o spring MVC 3 foi hospedado no OpenShift com sucesso.
O intuito deste artigo é para demostrar passo a passo a criação de um projeto com o openShift, daqui em diante, pode melhorar o nosso exemplo ou até mesmo publicar outras aplicações. Acredito que consegui explicar o básico da estrutura e espero que tenham sucesso com os seus projetos com o OpenShift, um grande abraço a todos.
Você pode fazer o download da aplicação de exemplo clicando aqui.
[…] OpenShift e Spring MVC 3 by Daniel Albuquerque Rabelo […]
Very nice post. I just stumbled upon your weblog and wanted to say that I’ve truly enjoyed surfing around your blog posts. After all I will be subscribing to your rss feed and I hope you write again very soon!
Hello, thank you very much.
Parabéns pela iniciativa desta documentação. Ela foi bem útil em meus testes.
Olá Paulo. Muito obrigado.
Funcionou bem!
What’s up everyone, it’s my first pay a quick visit at this website, and piece
of writing is genuinely fruitful designed for me, keep up posting these content.
Thank you for the comment.
[…] OpenShift e Spring MVC 3 by Daniel Albuquerque Rabelo […]
dai brother… tudo bem?
Cara, muito bom o post, mas não consegui completar.
Fiz atentamente todas alterações, dei update, commit and push. Esperei ele reiniciar e a aplicação não foi exibida. Ainda mostra a welcome do Tomcat. Rodando a aplicação local vai de boa.
Por onde começo? rsrs
Abraço
Olá Ezequias.
Obrigado pelo comentário, e me desculpe pela demora para responder.
Provavelmente, sua chave SSH2 do Eclipse e OpenShift estejam incompatíveis.
No momento do push ocorre alguma exceção?
Boa sorte.
Olá Daniel.
A chave está correta, não dá nenhuma ‘exception’ no ‘push’.
Fiz passo a passo novamente mas sem sucesso 😦
O brother, tem como me enviar teu projeto do eclipse (rar) pra eu comparar o que ta diferente?
Bom dia Ezequias,
Sim, no final do artigo tem o link para você fazer o Download do projeto.
Mas de qualquer forma, segue o link:
http://www.4shared.com/zip/sUfJLVlo/springmvc3.html?
Boa sorte.
Daniel, boa noite! Primeiramente obrigado por compartilhar esse excelente conteúdo. Seguindo os passos acima, consegui efetuar o commit e push do projeto com sucesso. Uma dica aos demais… No meu caso, para conseguir efetuar o push da aplicação, foi necessário desativar o antivírus da minha máquina, pois o mesmo não reconhecia a chave do eclipse que foi criada e copiada ao servidor da RedHat. Abraço, e sucesso.
Boa Noite,
Obrigado Diego, que bom que funcionou 🙂
Sua dica de desabilitar o anti-vírus foi bem útil.
Grande Abraço.