JSP versus PHP? Não PHP no Tomcat. =P

January 19th, 2008 by flaviocrispim

Sou especialista em desenvolvimento de aplicações web, usando tecnologia J2EE.

PHP? Bem tenho um contrato de vários meses com um provedor e na prática, java é bem caro de se manter neste quesito para aplicações web, já PHP consome poucos recursos e todo provedor ofereçe suporte sem custos adicionais.

Ótima oportunidade de conhecer outra tecnologia, tenho algumas idéias de pequenos projetos, mas e para desenvolver e manter com o menor custo possível precisarei aprender RoR ou PHP, que são as tecnologias disponiveis por padrão no meu provedor.

Porque PHP? Encontrei mais referências, tem uma comunidade maior e bastante ativa e porque pretendo entender um pouco mais do wordpress (escrito em PHP), Ruby on Rails, fica para a próxima.

Por mais ridículo que pareça, decidi sem nenhum motivo em especial pesquisar se seria possível escrever uma aplicação PHP e usar o Tomcat como servidor. (aeuaue)

Funciona sim, mas como não passo de newbie em PHP, não sei se funciona plenamente a ponto de poder rodar um Bugzilla ou um Wordpress.

Receita

Ingredientes:
Modo de Preparo do Ambiente:
  • Primeiro Instale a JVM e em seguida descompacte o zip do PHP5 no diretório que desejar, sugiro c:\PHP;
  • Instalar o Tomcat, basicamente descompacte-o, ou no caso de arquivo ‘.msi’ use o wizard;
  • Criar a variável de ambiente JAVA_HOME apontando para o diretório do…      … java;
  • PHP_HOME para…         … c:\PHP;
  • CATALINA_HOME – para o diretório onde estão os arquivos do Tomcat;
  • Incluir na variável de ambiente PATH os caminhos: %CATALINA_HOME%\bin;%PHP_HOME%;%JAVA_HOME%\bin
  • Fechar todas as janelas de comando que estão abertas. ;)
Modo de preparo do PHP no Tomcat
  • No diretório c:\PHP existe um arquivo: ‘php.ini-dist’, faça uma cópia dele com o nome… ‘php.ini’;
  • Edite o arquivo php.ini e procure por ‘extension=php_java.dll’, verifique se a linha existe e se não está comentada, caso não exista… crie.

O arquivo zip PECL serve para alguma coisa sim. Existem alguns arquivos que precisam ser extraídos para a pasta raiz do PHP e um último arquivo que deverá ser usado como biblioteca no Tomcat.

  • No zip PECL extraia os arquivos: php5servlet.dll, php_java.jar e php_java.dll para o diretório c:\PHP;
  • No diretório webapps do tomcat, crie um diretório que servirá como raiz da aplicação PHP, exemplo phpdubsoup;
  • No diretório Raiz da aplicação crie também o diretório WEB-INF, dentro do WEB-INF crie o diretório classes, ainda no diretório WEB-INF crie um arquivo web.xml, contendo:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<!DOCTYPE web-app PUBLIC
  “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
  “http://java.sun.com/dtd/web-app_2_3.dtd”>
<web-app>
<servlet>
    <servlet-name>php</servlet-name>
        <servlet-class>net.php.servlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>php-formatter</servlet-name>
        <servlet-class>net.php.formatter</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>php</servlet-name>
        <url-pattern>*.php</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>php-formatter</servlet-name>
        <url-pattern>*.phps</url-pattern>
    </servlet-mapping>
</web-app>

  • No arquivo PECL extraia o arquivo phpsrvlt.jar e extraia o conteúdo deste arquivo jar para o diretório WEB-INF/classes da aplicação phpdubsoup;

O conteúdo do arquivo jar contém os servlets declarados no web.xml, mas na versão usada necessita de uma pequena correção nos arquivos properties, para referenciar corretamente a biblioteca ‘php5servlet.dll’

  • Editar os arquivos: ‘reflect.properties’ e ’servlet.properties’ que se encontram em: phpdubsoup/WEB-INF/classes/net/php. A variável library deve ser igual ao nome da biblioteca, assim:

library=php5servlet

  • Na raiz da aplicação phpdubsoup, criar um arquivo chamado test.php, contendo:

<?php phpinfo(); ?>

  • Abrir uma linha de comando, e digitar startup, para iniciar o tomcat.
Modo do Consumo

phpdubsoup2.PNG

Pronto! PHP rodando dentro do Tomcat. Não é a configuração que irei usar no meu site, mas é assim que darei meus primeiros passos nessa linguagem.

Referência: http://blog.taragana.com/index.php/archive/running-php-5x-on-windows-using-tomcat-4x-or-5x/

Template para criação de projeto com o Maven2

December 6th, 2007 by flaviocrispim

Para criar um projeto novo usando o Maven é bem rápido, bastam alguns passos para que o projeto esteja pronto e configurado com a sua IDE preferida.

Neste post vou descrever o passo-a-passo para a criação de um projeto WAR. Os passos de execução podem precisar de pequenos ajustes para que seja executado no seu ambiente de desenvolvimento.

As características do meu projeto são: Projeto Web, Struts, jUnit.

O Maven tem a capacidade de resolver todas as dependências do projeto a partir do arquivo pom.xml e desta forma fará o download de todas as dependências, no meu caso todos os Jar´s do Strut´s e do jUnit, bem como todas suas dependências, automaticamente.

Para realizar esta tarefa o Maven pode precisar acessar seu repositório padrão, e para tanto uma conexão com a internet é necessária. Como no meu ambiente de trabalho as conexões com a internet são realizadas através de Proxy HTTP, então um passo adicional precisa ser realizado para indicar ao Maven que suas requisições utilize o Proxy configurado, e fornecendo usuário e senha, caso existam.

Não vou descrever o processo de instalação do Maven, que é bem simples. Considero que para continuar você possui o Maven2 instalado e que o diretório $MAVEN_HOME/bin esteja no PATH da máquina.

1. Proxy HTTP (Opcional)

Editar o arquivo $MAVEN_HOME/conf/settings.xml

<settings>
    …
    <proxies>
        <proxy>
            <id>optional</id>
            <active>true</active>
            <protocol>http</protocol>
            <username></username>
            <password></password>
            <host>proxy.mycomp.com</host>
            <port>8080</port>
            <nonProxyHosts>mycomp.com, localhost</nonProxyHosts>
        </proxy>
    </proxies>
    …
</settings>

2. Criando o template do projeto

Neste passo vou criar o diretório que servirá como raiz do meu projeto, seguindo uma estrutura definida qualquer:

  • #cd $USER_HOME/projetos
  • /export/home/fsantos/projetos# mkdir –p testewar/modules
  • /export/home/fsantos/projetos# cd testewar/modules
  • …/testewar/modules# mvn archetype:create -DgroupId=com.mycompany
    -DartifactId=portal -DarchetypeArtifactId=maven-archetype-webapp

Em promeiro lugar foram criados três diretórios, dois deles foram criados explicitamente pelo comando mkdir –p testewar/modules e o terceiro diretório foi criado pelo maven e o nome deste diretório será o artifactId da aplicação, que neste caso é portal.

3. Criando o workspace
  • /export/home/fsantos/projetos/testewar# mkdir –p workspaces/eclipse_33
  • /export/home/fsantos/projetos/testewar# cd workspaces/eclipse_33
  • /export/home/fsantos/projetos/testewar/workspaces/eclipse_33# pwd
    /export/home/fsantos/projetos/testewar/workspaces/eclipse_33
    (Copiar este path)

Executar o eclipse, no meu caso é o Eclipse 3.3 e indicar o path “/export/home/fsantos/projetos/testewar/workspaces/eclipse_33″ como o caminho para o workspace.

Quando o eclipse termina de carregar terá sido criado o diretório “.metadata”,
deixo o eclipse de lado por enquando e minimizo.

4. Criando os arquivos de configuração de projeto do Eclipse
  • #cd $USER_HOME/projetos/testewar/modules/portal

  • …/projetos/testewar/modules/portal# mvn -Dwtpversion=1.5 eclipse:eclipse

Ao final deste, uma estrutura de diretórios foi criada usando a arquétipo padrão do Maven. Os arquivos .classpath e .project estão prontos e com as dependências já relacionadas.

5. Configurando o projeto no Eclipse

Com o Eclipse rodando, preciso importar o projeto já criado, estes passos serão necessários:

  1. File -> Import…
  2. Import -> General -> Existing Projects into Workspace
    1. Botão Next
  3. Select root directory:
    1. Browse…
    2. Apontar para o diretório portal
  4. Botão Finish

O projeto será importado mas falta indicar o caminho do repositório do Maven para que o Eclipse possa compilar os fontes:

  1. Window -> Preferences…
  2. Na janela Preferences: buscar por Classpath variables
  3. Adicionar a variável M2_REPO com o valor $USER_HOME/.m2/repository
  4. Clicar Botão Ok
6. Adicionando Struts

Para adicionar struts no meu projeto preciso apenas editar o arquivo: $USER_HOME/projetos/testewar/modules/portal/pom.xml

<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”>
    …
    <dependencies>
        …
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts-core</artifactId>
            <version>1.3.8</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        …
    </dependencies>
    …
</project>

Agora as dependências com o Struts e com o jUnit já estão relacionadas e a partir de agora qualquer comando do Maven executado, o download das bibliotecas será realizado, exemplo:

  • /export/home/fsantos/projetos/testewar/modules/portal# mvn compile

Como as dependências com as bibliotecas foram adicionadas depois da criação dos arquivos do projeto (Tópico 5), o que foi feito de proppósito para tornar claro como adicionar uma dependencia a um projeto já pronto. Será necessário executar:

  • …/projetos/testewar/modules/portal# mvn eclipse:eclipse
7. Comandos do úteis (Goals)
mvn clean Limpa os diretórios de bibliotecas e de arquivos compilados
mvn compile Compila projeto
mvn eclipse:eclipse Atualiza lista de bibliotecas referenciadas pelo Eclipse
mvn install Adiciona arquivo war no repositório local do Maven
mvn deploy Adiciona arquivo war no servidor de artefatos do Maven
mvn package Gera arquivo war
mvn verify Verifica as dependências
mvn war:war Gera arquivo WAR no diretório target
mvn war:inplace Gera WAR ‘explodido’ no diretório ’src/main/webapp’, de modo que possa realizar o deploy deste usando configuração do Tomcat
.
Desvantagem: diretórios criados: ‘WEB-INF/classes’ e ‘WEB-INF/lib’ não são removidos quando é executado comando mvn clean

about


This is the about me section, you will prob. want to edit this. If you want to change the image you may do so by changing the avatar.jpg located in the NewZen images directory.

search

navigation

archives

categories