Headless Client Error

This simple HC call works like a charm in my developer and in my test server but not in my production server, am I missing something or is this a bug?
This is the jsp, it simply calls a form method in a solution and returns some HTML as output:

<%@ page import = "java.util.*" %> 
<%@ page import = "com.servoy.j2db.server.headlessclient.*" %> 
<%@ page import = "com.servoy.j2db.dataprocessing.IDataSet" %> 
<%@ page errorPage="errorpage.jsp" %> 
<% 
   ISessionBean servoy_hc = (ISessionBean)session.getAttribute("servoy"); 
   if (servoy_hc == null) 
   { 
      servoy_hc = HeadlessClientFactory.createSessionBean(request,"SprintEngine","nick","nick_passwd"); 
      session.setAttribute("servoy",servoy_hc); 
   } 
   boolean ok = servoy_hc.setMainForm("Magazzino");
   
   if (!ok)
	{
		out.print("error cannot work on required form");
		return;
	}

%>
<% 
    String result="";
    
    result= (String)servoy_hc.executeMethod(null,"hcGeneraMappa",null);
    
    out.println(result);
    
    session.setAttribute("servoy", null);
%>

And this is the error in the production server:

type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: sun/tools/javac/Main
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:484)
	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:534)
root cause

java.lang.NoClassDefFoundError: sun/tools/javac/Main
	at org.apache.jasper.compiler.SunJavaCompiler.compile(SunJavaCompiler.java:128)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:271)
	at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:546)
	at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:177)
	at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:189)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
	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:534)

Works fine in developer: MacOS X, java 1.5.0_05-48, Servoy 2.2.4_02
Works fine in test-server: MacOS X, java 1.5.0_05-48, Servoy 2.2.4_02
Doesn’t work in prduction server: Suse Linux 8.0, java 1.4.2_10-b03, Servoy 2.2.4_02

add tools.jar (somewhere in your JDK dir) to your classpath (in servoy_server.sh)

Hi Nicola,

you did’nt install the tool.jar on your production server!

HJK:
Hi Nicola,

you did’nt install the tool.jar on your production server!

Shouldn’t be in the default Java 1.4 install?

No, the tools.jar you can only find that one in the JDK version. of your JDK.
So use the tools.jar, of the java version you using!.

HJK:
No, the tools.jar you can only find that one in the JDK version. of your JDK.
So use the tools.jar, of the java version you using!.

Weird… in my MacOS X installs I don’t need to modify the servoy_server.sh.
In the production (linux) server i changed the file as follows:

java -Djava.awt.headless=true -classpath .:$JAVA_HOME/lib/tools.jar:lib/commons-collections.jar: etc etc

With $JAVA_HOME that points to my current java installation dir.
Is it okay?

ngervasi:
With $JAVA_HOME that points to my current java installation dir.
Is it okay?

perfect

jaleman:

ngervasi:
With $JAVA_HOME that points to my current java installation dir.
Is it okay?

perfect

Strange… now everything works fine but everytime I call my HC jsp page I get this error in the log:

2006-03-23 19:46 : Error occured informing client plugin udp, error: java.lang.NullPointerException

I don’t use the udp plugin… what’s happening?

I see that too! not only in webclient.
also close a normal (localhost) smartclient

Than you will see this message also.

Yep, I saw the error of the UDP plugin as well, allthough I do not use it anywhere.

Paul