JSF 1.2 - Fazer uma requisição a um web service pelo <f:selectItems

3 respostas
wescleyfcosta

Bom dia,

Eu tenho uma página que tem um SelectOneMenu que tem os itens ( Acontece que sempre que um request é feito nesse web service acontece um erro que acredito ter haver com o ciclo de vida do JSF, só não entendi o por que, vocês já passaram por isso?

abaixo o stacktrace do erro:

vlw
org.apache.jasper.el.JspELException: /pages/solicitacao/cadastro.jsp(56,5) '#{comboBox.grupos}' javax.xml.ws.soap.SOAPFaultException: INTERNAL SERVER ERROR : array out of bounds 
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
	com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:202)
	com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:762)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:844)
	com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:298)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:432)
	com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	t.web.filter.FiltroLogin.doFilter(FiltroLogin.java:30)

javax.xml.ws.soap.SOAPFaultException: INTERNAL SERVER ERROR : array out of bounds 
	org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156)
	$Proxy64.getlista(Unknown Source)
	t.ws.WebServiceImpl.getEntities(WebServiceImpl.java:190)
	t.web.ws.WebServiceImpl.findEntidadeContabilByTipo(WebServiceImpl.java:209)
	t.web.ws.WebServiceImpl.getCentroCustos(WebServiceImpl.java:132)
	t.dao.GrupoDAO.listaGrupos(GrupoDAO.java:55)
	t.util.ComboBox.getGrupos(ComboBox.java:26)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
	com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	org.apache.el.parser.AstValue.getValue(AstValue.java:169)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
	com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:202)
	com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:762)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:844)
	com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:298)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:432)
	com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	t.web.filter.FiltroLogin.doFilter(FiltroLogin.java:30)


org.apache.cxf.binding.soap.SoapFault: INTERNAL SERVER ERROR : array out of bounds 
	org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
	org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
	org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
	org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
	org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:111)
	org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
	org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
	org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
	org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:795)
	org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1626)
	org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1493)
	org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1401)
	org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
	org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:648)
	org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
	org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
	org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
	org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:461)
	org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:364)
	org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317)
	org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
	org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
	$Proxy64.getlista(Unknown Source)
	t.web.ws.WebServiceImpl.getEntities(WebServiceImpl.java:190)
	t.web.ws.WebServiceImpl.findEntidadeContabilByTipo(WebServiceImpl.java:209)
	t.web.ws.WebServiceImpl.getCentroCustos(WebServiceImpl.java:132)
	t.DAO.GrupoDAO.listaGrupos(GrupoDAO.java:55)
	t.util.ComboBox.getGrupos(ComboBox.java:26)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
	com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	org.apache.el.parser.AstValue.getValue(AstValue.java:169)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
	com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:202)
	com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:762)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:844)
	com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:298)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
	com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:432)
	com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)

3 Respostas

R

Kd o codigo?

wescleyfcosta
raf4ever:
Kd o codigo?

O método que dá erro é esse, bem na linha do return

private &lt;T&gt; T getEntities(Security ps, WSREQUESTAUTENT wsAuth,
			TipoEntidadeRetorno tipoEntidadeRetorno,
			FiltroEntidadeContabil filtro) {
		try {
			wsAuth.setHASH(ps.getHashMd5());
		} catch (NoSuchAlgorithmException e) {
			throw new ComunicacaoException(
					"Não foi possível carregar a base de dados", e);
		}
		if (filtro == null) {
			filtro = FiltroEntidadeContabil.FILTRO_ENTIDADE_CONTABIL_PADRAO;
		}
		wsAuth.setSISTEMA(wsSystemId);
		wsAuth.setAUTENT(ps.getAuthRc4());
		WSENTIDADESCONTABEISSOAP ws = null;
		try {
			ws = new WSENTIDADESCONTABEIS(new URL(wsdlURL), new QName(
					wsApwLink, "WSENTIDADESCONTABEIS"))
					.getWSENTIDADESCONTABEISSOAP();
		} catch (MalformedURLException e) {
			throw new ComunicacaoException(
					"Não foi possível carregar a base de dados", e);
		} catch (WebServiceException e) {
			throw new ComunicacaoException(
					"Não foi possível carregar a base de dados", e);
		}

		WSREQUESTLISTAENTIDADES request = new WSREQUESTLISTAENTIDADES();
		request.setCODIGOATE(filtro.getCodigoAteSemPonto());
		request.setCODIGODE(filtro.getCodigoDeSemPonto());
		request.setTIPOENTIDADE(tipoEntidadeRetorno.getCodigo());
		request.setAUTENT(wsAuth);
		request.setEMPRESA("");

		// TODO: Como filtrar os dominios?
		request.setLISTA(filtro.toLista());

		return (T) ws.getlista(request);
}
wescleyfcosta

Bem pessoal, o problema estava em um parâmetro errado que estava passando. O erro acontecia do lado do servidor…

passei o parâmetro correto e deu certo

vlw

Criado 1 de novembro de 2012
Ultima resposta 1 de nov. de 2012
Respostas 3
Participantes 2