Dhtmlxconnector java IllegalStateException

Hi guys,

I am using a join query to show the data from the database using render_sql and I am doing this to show two grids.

So, I created two mysql connectors for showing the data into the grids and also made the servlet entries in the web.xml.
I named ther servlet as “mysql_supplier_grid_connector”.

When I deploy my application sometime the grid doesn’t show any data and it gives error at jboss console as :

22:28:22,312 ERROR [[mysql_supplier_grid_connector]] Servlet.service() for servlet mysql_supplier_grid_connector threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.reset(ResponseFacade.java:310)
at com.dhtmlx.connector.BaseConnector.output_as_xml(BaseConnector.java:424)
at com.dhtmlx.connector.BaseConnector.output_as_xml(BaseConnector.java:461)
at com.dhtmlx.connector.BaseConnector.render(BaseConnector.java:308)
at com.dhtmlx.connector.BaseConnector.render_sql(BaseConnector.java:262)
at com.dhtmlx.connector.BaseConnector.render_sql(BaseConnector.java:230)
at edu.wustl.pfd.dhtmlxConnector.SupplierGridConnector.configure(SupplierGridConnector.java:32)
at com.dhtmlx.connector.ConnectorServlet.doGet(ConnectorServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)

sometimes I even get a NullPointerException but after refreshing the page the grid shows all the data properly.I don’t know why this is happening.

Guys please help me.
Thanks in advance.

According to call stack, it seems that on moment of data output , there already was some data sent and servlet can’t reset the response.

Not quite sure how it can appear - connector’s itself must not produce such result.
Can you provide the code of servlet class, where you are configuring the connector?

Thanks for your reply Stanislav.
here is the code you were asking for:

public class SupplierGridConnector extends ConnectorServlet {

@Override
protected void configure() {
	Connection conn = null;
	
	try {
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost/testDB", "root", "******");
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		GridConnector c = new GridConnector(conn,DBType.MySQL);
		c
				.render_sql(
						"SELECT st.long_name,st.short_name,atab.street,atab.city,atab.state,atab.phone_number,st.notes,st.identifier as stid "
								+ "FROM supplier_table st,address_table atab WHERE atab.identifier = st.address_id;",
						"st.identifier(stid)",
						"long_name,short_name,street,city,state,phone_number,notes");
	} finally {
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
}

The code itself looks correct.

I think that issue can be related to the
viewtopic.php?f=19&t=15385