[Resolvido] Não consigo implantar aplicativo corporativo!

9 respostas
A

Olá pessoal,

criei um projeto aplicativo corporativo no NetBeans, mas quando vou implantar dá erro, por causa do módulo web. Quando eu vou implantar separadamente os módulos, primeiro o EJB não tenho problemas, tanto que é criada as tabelas no banco, mas quando vou implantar o módulo web sempre tenho problemas. A linha que ele indica do build-impl.xml:284 leva até isso aqui <nbdeploy clientModuleUri="${client.module.uri}" clientUrlPart="${client.urlPart}" debugmode=“false” forceRedeploy="${forceRedeploy}"/>

Alguém aí sabe como posso resolver?

Esse é o erro

deploy?DEFAULT=D:\nb\NetBeans\POD\LocadoraApp\dist\gfdeploy\LocadoraApp&name=LocadoraApp&force=true falhou em GlassFish Server 3.x 
 Erro durante a implementação: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.NullPointerException. Consulte o server.log para obter mais detalhes
D:\nb\NetBeans\POD\LocadoraApp\nbproject\build-impl.xml:284: 
O módulo não foi implementado.
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:187)
	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
	at sun.reflect.GeneratedMethodAccessor145.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:390)
	at org.apache.tools.ant.Target.performTasks(Target.java:411)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
	at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:284)
	at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:539)
	at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:154)

9 Respostas

A

Anderson, consulta o server.log do Glassfish…

lá pode ter exatamente o que falhou… enfim…

A

olá adriano, já tentei ver esse arquivo, apartir do momento em que fui implantar, mas ainda não consegui identificar o problema

A

Ae galera, preciso da ajuda de vcs,

descobri qual é o problema, porém não sei como resolver. Passei todo o código para o Eclipse. O erro é por causa do JNDI que não tá na aplicação web

GRAVE: Exception while loading the app : EJB Container initialization error
java.lang.RuntimeException: Error while binding JNDI name bean/locadora for EJB : ServicosLocadoraBean

Eu implementei uma aplicação EJB, e um cliente, pra rodar via console. No main do cliente tem esse trecho de código aqui pra acessar o EJB

InitialContext ctx = new InitialContext();

DepartamentoRemote bean = (DepartamentoRemote) ctx.lookup("bean/departamento");

Agora a minha dúvida é, como devo declarar esse JNDI numa aplicação Web, já que ela não tem um main? Devo colocar no xml? No web-xml ou no faces-config? Como faço isso?

K

Jovem,

Este erro ocorre devido a ausência do JNDI.

Você pode configurar o JNDI desta forma:

private void init() throws NamingException {

		Hashtable<Object, String> prop = new Hashtable<Object, String>();
		prop.put(Context.INITIAL_CONTEXT_FACTORY,
				"org.jnp.interfaces.NamingContextFactory");		
		prop.put(InitialContext.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");		
		prop.put("jnp.socket.Factory","org.jnp.interfaces.TimedSocketFactory");
		prop.put("java.naming.provider.url", "jnp://localhost:1099");							
		ic = new InitialContext(prop);
	}

Esta aplicação web consulta o crédito do cliente através de um web service (EJB), através do ConsultaSituacaoBean. No construtor deste bean o metodo init() é chamado conforme o código abaixo:

public class ConsultaSituacaoBean{
	private InitialContext ic;
		
	public ConsultaSituacaoBean(){
		try {
			init();
		} catch (NamingException e) {
			e.printStackTrace();
		}
		
	}

        public void consultarSituacao(){
             IC2 c2 = (IC2) getIc().lookup("analiseCredito-ear/C2/remote"); // nesta linha o lookup é feito com o seviço
             //demais regras
        }
}

Existem diversas formas de está fazendo isso …Este foi apenas um exemplo.

Abs,

A

Muito obrigado Kanin. Vou acrescentar o que falta.

M

andersonrc, se conseguir resolver posta aí a solução. Estou tendo um problema bem parecido.
Estava usando o struts2 v2.2.1.1 e atualizei para struts2 v2.2.3

Durante o deploy no Glassfish v3 , ocorre o seguinte erro:

GRAVE: Exception while loading the app
GRAVE: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: org.apache.struts2.views.JspSupportServlet

Alguém sabe como resolver?

Obrigado.

A

magnojg:
andersonrc, se conseguir resolver posta aí a solução. Estou tendo um problema bem parecido.
Estava usando o struts2 v2.2.1.1 e atualizei para struts2 v2.2.3

Durante o deploy no Glassfish v3 , ocorre o seguinte erro:

GRAVE: Exception while loading the app
GRAVE: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: org.apache.struts2.views.JspSupportServlet

Alguém sabe como resolver?

Obrigado.

Eu consegui resolver. Tava faltando o arquivo persistence.xml na aplicação web com as configurações. E nesse xml deve ter a tag informando a unidade de persistência, definida no session bean do módulo EJB.

Aparentemente algo simples. É que pensei que como o módulo EJB tem esse persistence.xml, e o jar do EJB tá no path da aplicação web, achava que era desnecessário ter vesse xml no módulo web, mas precisa sim.

Segue o persistence.xml que estava faltando na aplicação web

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="LocadoraUP">

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<properties>
    <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
    <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/locadora" />
    <property name="javax.persistence.jdbc.user" value="postgres" />
    <property name="javax.persistence.jdbc.password" value="postgres" />
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />

<!-- 

Para atualizar as tabelas no banco de dados:
<property name="hibernate.hbm2ddl.auto" value="update" />

Para uso com o banco de dados MySQL:
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

-->

</properties>
		
</persistence-unit>
</persistence>
M

No meu caso este arquivo não estava faltando, e eu voltei a versão do struts2 para a 2.2.1.1 para resolver; a 2.3 não funcionou nem a pau… Bem, vou esperar mais um pouco para atualizar já que esse release é recente.

Obrigado pelo help.

A

Outra consideração a fazer, que pode servir aos novatos, é que quando for feito o deploy que seja em conjunto, ou seja, não faça o deploy do EJB, para depois fazer o deploy da aplicação web. Como o jar do módulo EJB vai está no path da aplicação web, basta fazer o deploy do módulo web.

Criado 14 de junho de 2011
Ultima resposta 16 de jun. de 2011
Respostas 9
Participantes 4