Multiplos WAR's dentro de um EAR é mais custoso para um servidor de aplicação?

9 respostas
C

Ola,

Estou trabalhando com o seam framework, sei que não vem ao caso, e me surgiu a seguinte dúvida que postei no assunto:
Multiplos WAR’s dentro de um EAR é mais custoso para um servidor de aplicação, sendo estes CRUD’s simples ?

Obrigado.

9 Respostas

darklordkamui

caioalx:
Ola,

Estou trabalhando com o seam framework, sei que não vem ao caso, e me surgiu a seguinte dúvida que postei no assunto:
Multiplos WAR’s dentro de um EAR é mais custoso para um servidor de aplicação, sendo estes CRUD’s simples ?

Obrigado.

Não, Pois o intuito do EAR é justamente subir tudo de uma vez.

Se vc for subir aplicação por aplicação na mão é mais custoso.

C

Concordo que subir um por vez é muito mais trabalhoso, mas em relação ao desempenho do servidor?

Grato.

darklordkamui

caioalx:
Concordo que subir um por vez é muito mais trabalhoso, mas em relação ao desempenho do servidor?

Grato.

Bom em um Servidor o comportamento que ele vai ter ao subir vai ser de consumir muita memoria no inicio, e ir diminuindo com o passar do tempo, até chegar ao consumo ideal.

Se vc fizer manualmente vai começar baixo e ir aumentando e depois de muito tempo se estabilizar novamente igual ao primeiro caso.

voce está pensando em fazer algum teste??

Ataxexe

caioalx:
Concordo que subir um por vez é muito mais trabalhoso, mas em relação ao desempenho do servidor?

Grato.

Com relação ao desempenho, provavelmente consumirá mais recusos do servidor, além de utilizar um classloader diferente. Mas isso é algo insignificante e não será o motivo de algum gargalo que sua aplicação venha a ter.

O empacotamento nunca deve ser feito com base em recursos, deve ser feito com base na natureza do que é colocado no servidor. Você não vai empacotar um aplicativo web no JBoss como um SAR, por exemplo.

C

Obrigado pelas respostas, então não devo me preocupar, claro que não posso sair abusando, é apenas para alguns casos específicos de cadastro e validação de funcionários da empresa que serão feitos poucas vezes ao ano. Obrigado a todos.

Ataxexe

Calma lá, você não deve se preocupar com relação ao consumo de recursos do servidor por subir um EAR ou um WAR, você deve avaliar se a sua aplicação deve ou não ser empacotada em um EAR baseado na natureza dela. Deixe os detalhes internos do servidor pra outras ocasiões.

Hebert_Coelho

Calma lá, você não deve se preocupar com relação ao consumo de recursos do servidor por subir um EAR ou um WAR, você deve avaliar se a sua aplicação deve ou não ser empacotada em um EAR baseado na natureza dela. Deixe os detalhes internos do servidor pra outras ocasiões.+1

C

Entendi, agradeço a todos. Tenho mais uma dúvida antes de encerra o tópico. Fiz um teste, apenas por curiosidade, criei um projeto web(WAR) separado do pacote EAR, ambos no mesmo servidor de aplicação, onde o web consumirá os session beans do EJB.
Consegui pegar por via de JNDI, mas não por via da annotation @EJB, o mesmo sempre me retorna null, ja fiz de tudo, mas nada resolveu. Agradeço desde então.

Segue abaixo o Código:

---------EAR---------------------------
Projeto EJB(hello)

package com.myapp;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class HelloEJB3
 */
@Stateless
public class HelloEJB3 implements HelloEJB3Remote {

	private String greeting = "Hello, EJB3!";
    /**
     * Default constructor. 
     */
    public HelloEJB3() {
        // TODO Auto-generated constructor stub
    }

	public String sayHello() {
		// TODO Auto-generated method stub
		return greeting;
	}

}

Projeto EJB(hello-client)

package com.myapp;

import javax.ejb.Remote;

@Remote
public interface HelloEJB3Remote {
	public String sayHello();
}

--------WAR--------------------------------------
Projeto WEB(helloWeb)

import javax.ejb.EJB;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class HelloTest {

	//not work
	@EJB(mappedName="HelloEJB3")
	private HelloEJB3Remote helloEJB3;
	
	//work
	private HelloEJB3Remote helloEJB3I = (HelloEJB3Remote) new InitialContext().lookup("helloEAR/HelloEJB3/remote");
	
	private String msg;
	private String msg2;
	
	public HelloTest() throws NamingException{
		this.msg = helloEJB3I.sayHello();
		this.msg2 = helloEJB3.sayHello();
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public String getMsg2() {
		return msg2;
	}

	public void setMsg2(String msg2) {
		this.msg2 = msg2;
	}

}

web.xml

<?xml version="1.0"?>
<web-app version="2.5" 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_2_5.xsd">
	<display-name>helloWeb</display-name>
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>
	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>
	<!-- Faces Servlet -->
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- Faces Servlet Mapping -->
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
		<url-pattern>*.faces</url-pattern>
	</servlet-mapping>
</web-app>

jsp apenas para mostrar resultado

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!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=UTF-8">
<title>Teste do EJB3</title>
</head>
<body>
<f:view>
	<h:outputText value="#{helloTest.msg}" />
	<h:outputText value="#{helloTest.msg2}" />
</f:view>
</body>
</html>

Agradeço desde então.

C

Apenas um add, subo o projeto desse jeito sem alterar nada e não acusa nenhum erro quando o servidor sobe, apenas quando entra no home.jsp devido o nullpointer. Via debug da pra ver que o jndi funciona e o ejb3 não.

Utilizo o Jboss 5.1 GA e JSF 1.2. Esse projetinho foi gerado via eclipse mesmo.

Grato.

Criado 29 de abril de 2013
Ultima resposta 1 de mai. de 2013
Respostas 9
Participantes 4