Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

<cfselect with bind to cfc works but is followed by 500 Jrun javax.servlet.ServletException

New Here ,
Dec 18, 2010 Dec 18, 2010

All;

This is driving me crazy. 

I have a CFC with a function that returns countries via remote as JSON with the // prefix as Cold Fusion is configured.

I call it with the following url

www.mydomain.com/getCountriesAndStates.cfc?method=getCountries&returnFormat=json&argumentCollection=...

It returns countries according to the Cold Fusion specs (just imagine it returning all countries, didn't want to paste it all the countries here).

//[[0.0,"Please select a country..."],["US","UNITED STATES"],["CA","CANADA"]] 

I bind a <cfselect for countrycode to this CFC and it works about 30% of the time.

Here is the <cfselect

<cfselect name="CountryCode" id="spanCountryCode" bind="cfc:getCountriesAndStates.getCountries()" bindonload="true"  onChange="DEdetermineTohide(this.id, '1')" onKeyUp="DEdetermineTohide(this.id, '1')">   

        </cfselect>

It has a second function that returns the States with a CountryCode as the argument. 

I call it with the follow url

/getCountriesAndStates.cfc?method=getStateProvince&returnFormat=json&argumentCollection={"countrycode":"US"}&_cf_nodebug=true&_cf_nocache=true

It returns states according to the old Fusion specs (just imagine it returning all the states, didn't want to paste all the states here.)

//[[0.0,"Please select a state..."],["AL","ALABAMA"],["AK","ALASKA"]]

I bind a <cfselect to this CFC with the countrycode as an argument and it populates the states for the countrycoe about 30% of the time.  It fails when the getCountries call fails.

Here is the State <cfselect

<cfselect name="StateCode" bind="cfc:getCountriesAndStates.getStateProvince({CountryCode})">

        </cfselect>

I have a third funtion that returns whether or not the country selected has States and Zip Codes.  I call this function from a seperate javascript script included in the header and fired from the <cfselect name="CountryCode for onChange or onKeyUp.  It basically determines whether or not to show or hide both the State or Zip span but calls the CFC so that I can encapsulate everything in one place.  So the state and zip span with <cfselect and <cfinput appear and disappear based on the information about the country and state and the labels can change too from State to Province and from Zip to Postal Code etc...

/getCountriesAndStates.cfc?method=getStateZipMetaData&returnFormat=json&argumentCollection={"countrycode":"US"}&_cf_nodebug=true&_cf_nocache=true

Ok, so I hope I have described enough about what I am doing.  This works about 30% of the time and fails about 70% of the time.  Flawlessly.  Sometimes it works for hours.  But eventually for some reason AFTER a perfectly good JSON response is returned from Cold Fusion, the Cold Fusion server starts following the JSON response with a 500 Serverlet Exception error.  This happesn on all function calls until I reboot my machine.

It is driving me mad and making me start to reconsider whether or not I want to use CFForm binding.  It seems like a nice elegant solution that really simplifies and reduces the amount of javascript I have to write, but I can't go to production with forms that produce 500 server errors.

Anyone have any ideas on what is going on?  If this is a bug?

Should I just stay away from <cfform binding?

Please help because it is driving me really crazy.

My platform information is below.

About 70% of the time it returns all the countries followed by a 500 Servlet Exception error.

500


javax.servlet.ServletException
     at coldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:154)
     at coldfusion.xml.rpc.CFCServlet.doGet(CFCServlet.java:264)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
     at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
     at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
     at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
     at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
     at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
     at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
     at jrun.servlet.FilterChain.service(FilterChain.java:101)
     at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
     at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
     at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
     at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
     at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
     at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
     at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
     at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
     at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

Platform details

Server ProductColdFusion
Version9,0,0,251028 
EditionDeveloper 
Operating SystemWindows XP 
OS Version5.1 
Adobe Driver Version4.0 (Build 0005) 

JVM Details
Java Version1.6.0_14 
Java VendorSun Microsystems Inc. 
Java Vendor URLhttp://java.sun.com/ 
Java HomeC:\ColdFusion9\runtime\jre 

CF9 Update 1

Apache 2.2

Database MS-SQL Express

TOPICS
Advanced techniques
917
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 18, 2010 Dec 18, 2010

I forgot to add

The page throws this error as a pop up

Error invoking CFC /getCountriesAndStates.cfc : Server Error [Enable debugging by adding 'cfdebug' to your URL parameters to see more information]

If I enable debuggins, I see the same thing as if I go to the URLs directly.

The CFC returns all the JSON data followed by a 500 server error

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 21, 2010 Dec 21, 2010
LATEST

Ok, so I think I answered this for myself.  This may be ignorant.  Whatever.  I haven't programmed CF in over 10 years and just started again a month ago, so I think advanced CFC and javascript is a lot.

I seperated my CFC into a directory with a Alias mapping under Apache and a CF Mapping from CFIDE

I trimmed down the application.cfc

It was

<cfset This.clientstorage="Cookie">

That was causing the remoting CFC's to return a 500 Jrun Servlet Error

I am just going to keep my remote CFC's seperate from the rest of my application anyway because they need a different type of security schema.

So, if anyone struggles with this.  I recommend just put your remotely accessd CFC's in a seperate virtual directory mapped from your webserver and CF and lock them down both with a trimmed down application.cfc and some kind of security.

They also seem to run much faster now combined with my other Ajax and Javascript.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources