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)
Anderson, consulta o server.log do Glassfish…
lá pode ter exatamente o que falhou… enfim…
olá adriano, já tentei ver esse arquivo, apartir do momento em que fui implantar, mas ainda não consegui identificar o problema
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?
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,
Muito obrigado Kanin. Vou acrescentar o que falta.
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.
[quote=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.[/quote]
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>
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.
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.