NullPointer while trying to obtain headless client

We’re getting a NullPointerException when trying to get a handle on the headless client from a servlet deployed under Servoy’s Tomcat instance. Anyone have a suggestion?

java.lang.NullPointerException
at com.servoy.j2db.ClientState.aD(Unknown Source)
at com.servoy.j2db.server.headlessclient.a.(Unknown
Source)
at
com.servoy.j2db.server.headlessclient.HeadlessClientFactory.createSessionBean(Unknown Source)
at iwp.shc.four51.XmlPostHandler.doPost(XmlPostHandler.java:59)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
at java.lang.Thread.run(Thread.java:595)

The call is:

ISessionBean servoy_hc =
HeadlessClientFactory.createSessionBean(null, “”, “”,
“”, new Object{ “Headless” });

What joy it is to work with a closed and unsupported platform.

Hi notsew,

If you need immediate support you better mail directly to support@servoy.com with an example that shows the error.
The people of Servoy can’t track every message send on this forum.

As for your NullPointer error.

It’s a bit of a guess without seeing all the rest of the jsp code but let me take a shot at it.

ISessionBean servoy_hc =
HeadlessClientFactory.createSessionBean(null, “”, “”,
“”, new Object{ “Headless” });

When I look at my (working) jsp code it seems you miss a few steps:

	ISessionBean servoy_hc = (ISessionBean)application.getAttribute("servoy"); 
	if (servoy_hc == null) 
	{ 
		servoy_hc = HeadlessClientFactory.createSessionBean(request,"mySolutionName"); 
		application.setAttribute("servoy",servoy_hc); 
	}
	boolean ok = servoy_hc.setMainForm("mySolutionFormName");

So try this approach and see if that works for you.

Hi Robert,

Thanks for your response. Thing is, this call works from within a JSP, but not from a Servlet. Any thoughts on what the relevant difference might be? Could it matter that the latter is deployed in a .war archive while the former is sitting in the ROOT context?

Jason

Hi Jason,

I must admit my knowledge of servlets is very limited but let me try to work with you on this.
When I look at the headless-client API information I never see a null passed as a parameter of the HeadlessClientFactory.createSessionBean method. In fact it refers to ‘javax.servlet.ServletReques’ if that tells you something.
So there may lie your problem.

Hope this helps you further.

Robert –

There’s another thread in this forum (http://forum.servoy.com/viewtopic.php?t=6417) in which it was discussed that passing null for that request arg is ok.

Thanks,
Jason

Hi Jason,

Lets entertain the thought that it is required. Does it work then for you?

Na, that’s what we tried first, per the examples. We’ll take it up with support. Thanks for your help.