Fórum

GRAVE: Servlet.service() for servlet jsp threw exception

Lucas Almeida de Andrade, modificado 9 Anos atrás.

GRAVE: Servlet.service() for servlet jsp threw exception

New Member Postagens: 14 Data de Entrada: 11/03/15 Postagens Recentes
Olá, Eu estou com o seguinte problema se alguém puder ajudar.

Eu criei uma portlet com um formulário. Na ação de submeter meu formulário eu tenho que se comunicar com um web service.
Eu tentei criar os métodos para comunicação na classe java central da portlet. Só que depois que eu adicionei os métodos obtive um erro de servidor.
Antes de eu adicionar os métodos a portlet estava submetendo normal e a classe java central estava funcionando normalmente. Eu adicionei todos os jars que eu to usando está tudo ok. Se alguém puder me ajudar vou colar meu fonte aqui, só que ele não está acabado e abaixo dele colarei o erro também. Grato.

========================================================================================================

######## arquivo AbreChamadp.java : #######################


package com.nomedaminhaempresa.liferaymvc;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.util.bridges.mvc.MVCPortlet;

public class ChamadoMetodos extends MVCPortlet{
@Override
public void processAction(ActionRequest actionRequest,
ActionResponse actionResponse) throws IOException, PortletException
{
System.out.print("Portlet controller executing");
PortletPreferences prefs = actionRequest.getPreferences();
String nome = actionRequest.getParameter("nome");
String email = actionRequest.getParameter("email");
String telefone = actionRequest.getParameter("telefone");
String cep = actionRequest.getParameter("cep");
String cidade = actionRequest.getParameter("cidade");
String mensagem = actionRequest.getParameter("mensagem");

Logger logger = Logger.getLogger(ChamadoMetodos.class);
logger.info("nome= "+nome);
logger.error("nome= "+nome);

if (nome != null){
System.out.print("Entrou no if");
prefs.setValue("nome", nome);
prefs.setValue("email", email);
prefs.setValue("telefone", telefone);
prefs.setValue("cep", cep);
prefs.setValue("cidade", cidade);
prefs.setValue("mensagem", mensagem);
prefs.store();
}


System.out.println(nome);
/*String token = getToken("adm", "teste", "aquinomeuarquivoeucolocoaurldowebservicerestfull");
System.out.println("Token encontrado : " + token);
if (token != null){
prefs.setValue("token", token);
}*/
SessionMessages.add(actionRequest, "success");
super.processAction(actionRequest, actionResponse);

}

public String getToken(String login, String senha, String urlWs){

try {
HttpClient cliente = new DefaultHttpClient();
List<BasicNameValuePair> listaParametros = new ArrayList<BasicNameValuePair>();
listaParametros.add(new BasicNameValuePair("login", login));
listaParametros.add(new BasicNameValuePair("senha", senha));
UrlEncodedFormEntity url = new UrlEncodedFormEntity(listaParametros);
HttpPost post = new HttpPost(urlWs);
post.setEntity(url);
HttpResponse response = cliente.execute(post);

String xmlRetornado = responseToString(response);
String token = genericParseXmlgetToken(xmlRetornado);

if (token != null){
return token;
} else {
return "erro do servidor";
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
return "erro";
}


private String genericParseXmlgetToken(String xml) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
Document doc = db.parse(is);
//<retorno><sucesso></sucesso><data/><usuario><id></id><token>aoushdf239-j29fh39</token></usuario></retorno>

try {
Node retorno = doc.getChildNodes().item(0); // <sucesso></sucesso><data/><usuario><id></id><token>aoushdf239-j29fh39</token>
Node usuario = retorno.getChildNodes().item(2); // <id></id><token>aoushdf239-j29fh39</token>
Node token = usuario.getChildNodes().item(1); // aoushdf239-j29fh39
return token.getTextContent();
} catch (Exception e) {
return null;
}
}

private String responseToString(HttpResponse response) throws IllegalStateException, IOException {
InputStream in = response.getEntity().getContent();
Scanner sc = new Scanner(in);
String retornoWS = "";
while (sc.hasNext()){
retornoWS += sc.next() + " ";
}
return retornoWS;
}

}

========================================================================================================

########ERRO emoticon######################

14/04/2015 14:47:30 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at com.liferay.portlet.PortletContextFactory._create(PortletContextFactory.java:84)
at com.liferay.portlet.PortletContextFactory.create(PortletContextFactory.java:40)
at com.liferay.portlet.PortletConfigFactoryImpl.create(PortletConfigFactoryImpl.java:56)
at com.liferay.portlet.PortletConfigFactoryUtil.create(PortletConfigFactoryUtil.java:32)
at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:597)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:57)
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:78)
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53)
at com.liferay.portlet.PortletContainerImpl._doRender(PortletContainerImpl.java:655)
at com.liferay.portlet.PortletContainerImpl.render(PortletContainerImpl.java:138)
at com.liferay.portlet.SecurityPortletContainerWrapper.render(SecurityPortletContainerWrapper.java:141)
at com.liferay.portlet.RestrictPortletContainerWrapper.render(RestrictPortletContainerWrapper.java:126)
at com.liferay.portal.kernel.portlet.PortletContainerUtil.render(PortletContainerUtil.java:156)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer._render(PortletRenderer.java:125)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer.access$4(PortletRenderer.java:107)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:180)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:1)
at com.liferay.portal.kernel.executor.CopyThreadLocalCallable.call(CopyThreadLocalCallable.java:69)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682)
at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593)
at java.lang.Thread.run(Thread.java:662)
thumbnail
Guillermo Rodolfo Mangieri, modificado 9 Anos atrás.

RE: GRAVE: Servlet.service() for servlet jsp threw exception

Regular Member Postagens: 166 Data de Entrada: 10/09/12 Postagens Recentes
Meu caro, bom dia...

O velho NullPointerException só estressa... obviamente algo está chegando como null... o que é pior ... voce comentou todo o trecho do token e não teria nada de processamento que provoque isso.

Portanto, sem ver tua JSP eu penso em verificar a camada de view porque alguma coisa necessária não está vindo no actionRequest...

primeiro... eu faria o System.out.println de TODOS os dados que preciso da minha tela para ter certeza que ninguem chega null.

segundo, acho que é bem pouco provavel, mas, verifica se voce não incluiu um actionURL na jsp e portanto não processaria com o método processAction(). Isto não acho que seja o problema, porque voce disse que colocando o token da zi-k.

terceirro... no teu StackTrace fala que o erro acontece em

at com.liferay.portlet.PortletContextFactory._create(PortletContextFactory.java:84)

onde se voce olhar no src do liferay aparece:

servletContext = portletBag.getServletContext();

ai que abre minhas dúvidas para duas questões:

A) teu servlet Context é nulo
emoticon voce está deploando teu arquivo war na pasta de aplicaçoes do teu webserver em lugar da pasta deploy???

A primeira é obvio que tem que verificar teu servlet
A segunda tem origem porque a linha de erro no src está dentro de um if cuja validação é portletApp.isWARFile()... o qual me leva a pensar que teu portlet está dentro do WAR sem ter sido explodido na tua pasta de aplicações... será que algum path está errado e isso provoca o nullpointer???

Sei que a tendencia a complicar é grande, mas, que tem o codigo fonte é estou te dando ideias por onde começaria a encontrar o erro...

aquele abraço