Glass Fish v3 ou TomCat 6

E ai pessoal, eu dei uma lida sobre ambos, mas queria saber sobre a experiencia de alguém que ja implementou usando ou o tomCat ou o glassfish, e talvez indicar algum :smiley:

O GlassFish é maior que o Tomcat no sentido de ser um Servidor de aplicação. O Tomcat é só um servlet contâiner, mas eu acho ele mais simples e levinho -

[IMHO]Você deveria usar o GlassFish caso queira algo como EJB…

Humm, é que tipo, ainda to engatinhando nesse troço de java web, mas não rolou instalar o TomCat aqui no ubuntu e o glassFish eu consegui pelo NetBeans mesmo, então será que vou me complicar mto com o GlassFish? :wink:

vai de GV ele é muito mais rapido eu ja fiz comparações e é extremamente notavel

Opaaaaa !!!, então meu velho, olha eu estou treinando J2EE também, mas estou no começo utilizando apenas um CRUD que fiz e estou implementando um formulário agora para gravar os dados no banco através de Servlets, scriptlets, e agora vou começar a estudar JSTL, já fiz algumas coisas com o Glassfish é legal de se trabalhar, como nosso amigo disse: " Glassfish é um servidor de aplicações, ou seja, ele pode ser utilizado para diversos frameworks se não estou enganado, agora nosso querido amigo TOMCAT ele é um “Serlvlet Container”, se sua aplicação só vai precisar de uma conexão com banco de dados via JDBC e sua página web terá apenas JSP, Servlets, Scrptlets, pode usar ele sem problemas, digo que é mais recomendado para quem esta começando como nós…rsss, quando se aprofundar mais como um EJB, criar uma persistencia com JPA, ai sim é interessante usar um glassfish da vida ou mesmo um Jboss.

Espero ter ajudado.

Até mais.

Aproveitando o gancho, eu qria saber como funciona o esquema de formulários, como ele envia os dados ao servidor e depois como o servidor retorna os dados para ele (a página) ??? Tenho pesquisado isso à semanas, mas não me entra na cuca! :S

Depende do que você for fazer como já disseram anteriormente.
Eu já usei Tomcat em aplicações de e-commerce e funciona muito bem, é simples, leve e fácil de usar. Se você está com problemas para usar o Tomcat no Ubuntu você pode seguir o serverguide que é muito bom.

https://help.ubuntu.com/9.04/serverguide/C/tomcat.html

Quanto ao glassfish ele é muito bom também mas eu recomendaria ele para aplicações mais robustas usando EJB.

Não tem muito segredo instalar tomcat no Ubuntu.

Quando voce trata de formulários web, ou seja qualquer ação que seja, voce esta enviando uma “REQUEST, ou seja uma requisição” e aguarda uma “RESPONSE, ou seja resposta” do servidor que voce solicitou o serviço, página, seja qual for a solicitação.

Então, primeiro voce cria um formulario como eu criei aqui nesse código abaixo:

<html>
<head>
<body>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<form action = "nois" method = "post">
		Nome: &lt;input type = "text" name = "nome" /&gt;<br/>
		E-mail: &lt;input type = "text" name = "email" /&gt;<br/>
		Endereco: &lt;input type = "text" name = "endereco" /&gt;<br/>
		Data Nascimento: &lt;input type = "text" name = "dataNascimento" /&gt;<br/>
		
		&lt;input type = "submit" value = "Gravar" /&gt;
	&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;

[b]Essa é uma pagina em html mesmo, agora para que esse formulário tenha alguma funcionalidade é necessário criar uma classe extendendo Servlet, segue abaixo a classe que criei que recebe os dados do usuário informado através do formulário criado acima e grava no banco através de outras classes que criei

Mas só para voce ter uma idéia de como é feito esse relacionamento de ações entre formulários e requisições.

Para voce treinar um pouco mais sobre isso, aconselho voce baixar a apostila da CAELUM: http://www.caelum.com.br/curso/fj-21-java-web/

.[/b]

Segue abaixo:

public class AdicionaContatoServlet extends HttpServlet {
		/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

		public void doGet (HttpServletRequest request,
 			HttpServletResponse response)throws ServletException, IOException {
    	

 		PrintWriter out = response.getWriter();
    	//Pegando os parametros da request
    	
    	String nome = request.getParameter("nome");
    	String email = request.getParameter("email");
    	String endereco = request.getParameter("endereco");
    	String dataEmTexto = request.getParameter("dataNascimento");
    	Calendar dataNascimento = null;
    	
    	//Fazendo a conversão de data
    	try{
    		
			//String dataEmTexto = null;
			Date date = new SimpleDateFormat ("dd/mm/yyyy").parse(dataEmTexto);
    		dataNascimento = Calendar.getInstance();
    		dataNascimento.setTime(date);
    	}catch (ParseException e){
    		out.println ("Erro de conversão de data");
    		return;
    	} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    
    		//Cria o objeto de contato
    	Contato contato = new Contato();
    	contato.setNome(nome);
    	contato.setEmail(email);
    	contato.setEndereco(endereco);
    	contato.setDataNascimento(dataNascimento);
    	
    		//Adiciona o contato na base.
    	try {
			ContatoDao dao = new ContatoDao();
			dao.adiciona(contato);
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
		//Imprime o nome do contato que foi adicionado
    	out.println ("&lt;html&gt;");
    	out.println ("&lt;body&gt;");
    	out.println ("Contato" + contato.getNome() +  "Adicionado com sucesso");
    	out.println ("&lt;/body&gt;");
    	out.println ("&lt;/html&gt;");
		
    }


}


O método resquest.getPameter é o método que “Pega” as informaçoes digitadas pelo usuário no formulário.

Quando voce trata de formulários web, ou seja qualquer ação que seja, voce esta enviando uma “REQUEST, ou seja uma requisição” e aguarda uma “RESPONSE, ou seja resposta” do servidor que voce solicitou o serviço, página, seja qual for a solicitação.

Então, primeiro voce cria um formulario como eu criei aqui nesse código abaixo:

&lt;html&gt;
&lt;head&gt;
&lt;body&gt;
 &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
	&lt;form action = "nois" method = "post"&gt;
		Nome: &lt;input type = "text" name = "nome" /&gt;<br/>
		E-mail: &lt;input type = "text" name = "email" /&gt;<br/>
		Endereco: &lt;input type = "text" name = "endereco" /&gt;<br/>
		Data Nascimento: &lt;input type = "text" name = "dataNascimento" /&gt;<br/>
		
		&lt;input type = "submit" value = "Gravar" /&gt;
	&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;

[b]Essa é uma pagina em html mesmo, agora para que esse formulário tenha alguma funcionalidade é necessário criar uma classe extendendo Servlet, segue abaixo a classe que criei que recebe os dados do usuário informado através do formulário criado acima e grava no banco através de outras classes que criei

Mas só para voce ter uma idéia de como é feito esse relacionamento de ações entre formulários e requisições.

Para voce treinar um pouco mais sobre isso, aconselho voce baixar a apostila da CAELUM: http://www.caelum.com.br/curso/fj-21-java-web/

.[/b]

Segue abaixo:

public class AdicionaContatoServlet extends HttpServlet {
		/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

		public void doGet (HttpServletRequest request,
 			HttpServletResponse response)throws ServletException, IOException {
    	

 		PrintWriter out = response.getWriter();
    	//Pegando os parametros da request
    	
    	String nome = request.getParameter("nome");
    	String email = request.getParameter("email");
    	String endereco = request.getParameter("endereco");
    	String dataEmTexto = request.getParameter("dataNascimento");
    	Calendar dataNascimento = null;
    	
    	//Fazendo a conversão de data
    	try{
    		
			//String dataEmTexto = null;
			Date date = new SimpleDateFormat ("dd/mm/yyyy").parse(dataEmTexto);
    		dataNascimento = Calendar.getInstance();
    		dataNascimento.setTime(date);
    	}catch (ParseException e){
    		out.println ("Erro de conversão de data");
    		return;
    	} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    
    		//Cria o objeto de contato
    	Contato contato = new Contato();
    	contato.setNome(nome);
    	contato.setEmail(email);
    	contato.setEndereco(endereco);
    	contato.setDataNascimento(dataNascimento);
    	
    		//Adiciona o contato na base.
    	try {
			ContatoDao dao = new ContatoDao();
			dao.adiciona(contato);
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
		//Imprime o nome do contato que foi adicionado
    	out.println ("&lt;html&gt;");
    	out.println ("&lt;body&gt;");
    	out.println ("Contato" + contato.getNome() +  "Adicionado com sucesso");
    	out.println ("&lt;/body&gt;");
    	out.println ("&lt;/html&gt;");
		
    }


}


O método resquest.getPameter é o método que “Pega” as informaçoes digitadas pelo usuário no formulário.
[/quote]

Olá, bom nas pesquisas que eu fiz eu sempre via algo do tipo

"form action = arquivo.js method = post ... "

Seí que o “js” é JavaScript, ou seja um arquivo escrito em javaScript com a Servlet seria igual, eu colocaria daí:

"form action = servlet.java method post ... "

Seria isso?

Brigadão pela força! =D

[b]Além de criar o formulário como comentei pra voce, é necessário efetuar o mapeamento dessa classe no arquivo WEB.XML para que ela tenha efeito no seu formulário.

Esse arquivo web.xml fica dentro do diretório “WebContent”[/b], dentro da pasta “WEB-INF”.

Segue script que fiz para “linkar” o formulário a minha classe que executa o método para gravar no banco.[/b]

&lt;servlet&gt;
		&lt;description&gt;&lt;/description&gt;
		&lt;servlet-name&gt;argentino&lt;/servlet-name&gt;
		&lt;servlet-class&gt;br.com.jsp.servlets.Teste.AdicionaContatoServlet&lt;/servlet-class&gt;
	&lt;/servlet&gt;
	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;argentino&lt;/servlet-name&gt;
		&lt;url-pattern&gt;/nois&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;

Em [color=red]“servletname”[/color] voce pode informar o nome que quiser, pois esse é um nome interno do arquivo nao vai aparecer ao usuário, somente para voce identificar melhor onde estão cada item no seu arquivo.

[color=red]“ServletClass”[/color] é o nome do pacote completo onde esta a sua classe que tem o comportamento para gravar os dados no banco.

[color=red]“URL-Pattern”[/color] é o nome do diretório que será “Procurado” quando voce clicar em “Gravar” no formulário, pois ele vai buscar no arquivo web.xml a classe informada e fará o que esta definido nos métodos da classe.

Voltando a questão, no campo [color=red]<form action = “qualquerNOME” ></form>[/color] voce pode informar um nome para ação do seu formulário é somente isso, não é necessário informar se tem a extensão.js, ou jsp, pelo menos eu ainda não cheguei em algo que explique isso, se eu estiver falando bobeira alguém me corrija…rss

Puts, sendo assim ainda vou ter que pegar uma base de XML para começar com Java Web?? D:

Não é necessário, existe um plugin chamado WTP que pode ser instalado a IDE Eclipse, ao instalar esse plugin quando voce cria um projeto WEB no eclipse, ele já cria essa estrutura pra voce, o que voce vai fazer é somente apontar o caminho da sua classe e nomear seus servlets.

Baixa essa apostila aqui, que vai te dar uma idéia do que estou falando.

Ela tem uma boa base para nós que estamos começando.

Flwww

No meu momento atual é complicado seguir uma apostila pois passo a maior parte do tempo longe do meu pc, mas vou ver se nas férias arranjo algum tempo!

Comparar TOMCAT com GLASSFISH é a mesma coisa que comparar um SANDUICHE com um CHURRASO. :thumbdown:

Sua aplicação tem requerimentos, escolha os servers que atendem os respectivos requerimentos. Depois aplique um filtro pela popularidade de adoção, tecnologia consolidada, curva de aprendizagem e riscos(pane, bug, imcompatibilidade).

Já trabalhei com Weblogic, Oracle4J, Tomcat, Geronimo, JOnAS, Resin, Sun AS, GlassFish, JBoss. (Coreanos ainda vão lançar o JEUS7 que vou experimentar.)

Escolha pelo uso racional, entre um container e um server.

Ainda sobre esse discussão hj criei minha página de cadastro de alunos e nessa página ele me mostra todos os alunos cadastrados, mas minha aplicação deu o erro chamado: java.lang.OutOfMemoryError: PermGen space que se refere exatamente ao tamanho da memória da máquina virtual, vi q dá pra aumentá-la mas se eu usasse o GlassFish resolveria o problema?

Faltou o Websphere e o JRun apenas.

Já lançaram há algum tempo e certificado JEE6. http://blogs.sun.com/theaquarium/entry/tmaxsoft_jeus_7_is_the

Realmente, não tem como comparar.

Tanto um quanto outro depende do tamanho da mémoria usada.

Eu te aconselho o TOMCAT por enquanto. Você pelo visto ainda está iniciando. O TC é facinho de instalar. Use-o bastante até aprender bem o que é um servlet-container. Deopois você vai para o GF tentar algo com EJB, JPA, etc (J2EE). Descobrir o que é um servidor de aplicação. Depois começa a brincar com outras coisas. Acho que esse é um caminho interessante. Mas é só uma sugestão, não existem formulas!

[quote=andre2k2]Eu te aconselho o TOMCAT por enquanto. Você pelo visto ainda está iniciando. O TC é facinho de instalar. Use-o bastante até aprender bem o que é um servlet-container. Deopois você vai para o GF tentar algo com EJB, JPA, etc (J2EE). Descobrir o que é um servidor de aplicação. Depois começa a brincar com outras coisas. Acho que esse é um caminho interessante. Mas é só uma sugestão, não existem formulas![/quote] Estou iniciando sim, e aproveitando algumas dicas do amigo eh melhor usar, por questao de memoria, JSP ou Servlet? me parece q o servlet e o recomendado, naum?

Amigo, um JSP torna-se um servlet dentro do servlet container. Ele irá se tornar um arquivo .class, que extende de HttpServlet, implementando os metodos necessários tudo. Se tiver curiosidade então você pode procurar melhor sobre esse assunto. De fato um JSP e um servlet são a mesma coisa para o servidor. Então não há essa coisa de mais rápido ou menos rápido. O que ocorre é que o JSP tem um propósito e o Servlet tem outro.

O JSP tem uma aproximação maior da view, onde você usa HTML, Javascript, etc. Tem uma proximidade maior com a camada view. Já o servlet é mais próximo da regra de negócio, nela você usará somente java. Veja, o JSP foi pensado para os profissionais da área de web designer. Eles não precisam aprender java para criar suas páginas (pense em grandes equipes em que cada um tem um papel bem definido). Além disso sair colocando println() com uma linguiça de HTML no meio do servlet não é algo muito interessante, do ponto de vista de manutenção de código. Então, a César o que é de César: HTML fica na JSP, regra de negócio fica da servlet para dentro.

Sugestão: Leia o livro Head First Servlets & JSP (Use a cabeça Servlet & JSP). Esse livro dá essa visão certinho. Aliás eles até enfatizam isso muitas vezes.