2012-08-07 24 views
0

我在使用WebSphere上的JSF 1.1(MyFaces 1.1.8)时遇到问题。在Tomcat 5.5上部署我的应用程序时,此行为不适用,并且一切正常。ExternalContext的Request对象上的getQueryString在WebSphere上返回null

当我尝试从Ogone(支付网关)回发一个网址读取参数,再加入我的JSF会话(会话仍然存在),查询字符串是无法通过

final HttpServletRequest request = (HttpServletRequest)FacesContext 
.getCurrentInstance().getExternalContext().getRequest(); 

String qs = request.getQueryString(); // null on WebSphere, filled on Tomcat 

要成为一个位更完整,查询字符串看起来是这样的:

http://100.100.100.100:9080/my_app_context/pages/screen7.jsf?orderID=4208013442596271&currency=EUR&amount=60&PM=iDEAL&ACCEPTANCE=0000000000&STATUS=9&CARDNO=11-XXXX-11&ED=&CN=K%C3%A9m+Birdy&TRXDATE=08%2F06%2F12&PAYID=15879916&NCERROR=0&BRAND=iDEAL&COMPLUS=personID%3D01%26subscriptionID%3D02&IP=100.100.100.100&SHASIGN=9642468EE016BD49787B62EA7231124B3C24F9BBFC5B3B3B4D9E97D678979E57E5EED9B47D611441A6FCA2EB1D2DB87348C8111ACFF366A4E244106CCCFAFDA5 

我在想一些的WebSphere Web容器的设置可能会阻止容器从正确处理外部请求。或者也许这里有一些课堂加载问题,但是我一直无法找到它。

在WebSphere堆栈跟踪是这样的:

12-08-07 08:02:26 ERROR - 
java.lang.NullPointerException 
at ... own code trying to getQueryString()... 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:618) 
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:459) 
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85) 
at org.apache.myfaces.custom.security.SecurityContextPropertyResolver.getValue(SecurityContextPropertyResolver.java:101) 
at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:539) 
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) 
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386) 
at javax.faces.component.UIOutput.getValue(UIOutput.java:118) 
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:267) 
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:226) 
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:69) 
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:57) 
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:799) 
at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:678) 
at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:546) 
at com.ibm._jsp._aanmeldScherm7._jspx_meth_h_outputText_1(_aanmeldScherm7.java:204) 
at com.ibm._jsp._aanmeldScherm7._jspx_meth_f_subview_0(_aanmeldScherm7.java:1870) 
at com.ibm._jsp._aanmeldScherm7._jspService(_aanmeldScherm7.java:85) 
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:88) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1213) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1154) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:848) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:691) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:654) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:526) 
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) 
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:248) 
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:648) 
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1042) 
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:484) 
at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99) 
at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135) 
at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760) 
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892) 
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462) 
at com.ibm._jsp._defaultLayout2._jspx_meth_tiles_insert_2(_defaultLayout2.java:392) 
at com.ibm._jsp._defaultLayout2._jspx_meth_h_form_0(_defaultLayout2.java:597) 
at com.ibm._jsp._defaultLayout2._jspx_meth_f_view_0(_defaultLayout2.java:715) 
at com.ibm._jsp._defaultLayout2._jspService(_defaultLayout2.java:92) 
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:88) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1213) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1154) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:848) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:691) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:654) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:526) 
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) 
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:248) 
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:325) 
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:426) 
at org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl.dispatch(JspTilesViewHandlerImpl.java:236) 
at org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl.renderView(JspTilesViewHandlerImpl.java:222) 
at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101) 
at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:221) 
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) 
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:146) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:147) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1213) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1154) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145) 
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75) 
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:848) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:691) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:654) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:526) 
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90) 
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:764) 
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478) 
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:133) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:457) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:300) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:271) 
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196) 
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751) 
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1560) 

如果任何人都可以点我在正确的方向,请。

WebSphere版本是6.1.0.43。

回答

4

好的,这可能会派上用场。

潜水深入到WebSphere Application Server的自定义Web容器的属性,我才翻过这一个:

制作查询字符串可供欢迎文件[修订包25或更高版本]

通常,当请求最初发送到 应用程序的上下文根,请求被转发到一个欢迎文件。如果在初始请求中包含查询 字符串,则在欢迎文件中包含 欢迎文件中的request.getQueryString()属性时, 欢迎文件不可用。但是,如果在欢迎文件中包含javax.servlet.forward.query_string 属性,则查询字符串可用于 欢迎文件。

如果您需要使用request.getQueryString()属性,而不是 的javax.servlet.forward.query_string属性,使查询字符串 可用的欢迎文件,添加 com.ibm.ws .webcontainer.provideQStringToWelcome将定制属性设置为 您的Web容器配置并将该属性设置为true。该属性的 默认值为false。名称值 com.ibm.ws.webcontainer.provideQStringToWelcomeFile真正

对于WebSphere 6.1这些自定义属性可以在这里找到:http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.base.doc%2Finfo%2Faes%2Fae%2Frweb_custom_props.html

的线索是,一旦在转发请求,查询字符串本身被剥离来自请求对象,为“内部”查询字符串留下空间。初始查询字符串仍然可用

request.getAttribute(“javax.servlet.forward。query_string“);

所有有点棘手,但我们的代码现在健壮,能够在WebSphere和其他servlet容器内运行,以及管理由Ogone发送的UTF-8和ISO-8859-1编码查询字符串参数。

谢谢收听。

相关问题