ColdFusion初始化需要外部配置文件的Java对象方法

时间:2013-09-21 00:40:13

标签: java coldfusion constructor init createobject

我一直在敲打这个问题一段时间,似乎找不到任何合适的答案或解释这些错误。我正在使用第三方JAR" PropHandler.jar" 我试图调用getMessageList方法,它接受3个args并需要一个配置文件。

<cfset configFile = 'C:\data\getMsgListCONFIG.xml'>
<cfset Obj = createObject("java","client.PropHandler") />
<cfdump var="#Obj#">


一切都很好,我的转储返回一个方法列表。现在,我需要将我的配置文件添加到方法中并传入我的args,没有爱在这里,我试过这个:

<cfset x = Obj.getMessageList.init(configFile)>

<cfset x = Obj.getMessageList().init(configFile)>

<cfset x = Obj.getMessageList('identifier', 'greaterthan', '2012-05-18T12:00:00-04:00').init(configFile)>

甚至尝试通过创建对象进行初始化:

<cfset Obj = createObject("java","client.PropHandler").getMessageList('identifier', 'greaterthan', '2012-05-18T12:00:00-04:00').init(configFile)>

全部返回相同的错误:

  

对象实例化异常

     

实例化Java对象时发生异常。班级   不能是接口或抽象类。如果班级有   接受参数的构造函数,必须调用构造函数   显式使用init(args)方法。错误:client.PropertyHandler

当我没有发送3个参数时,我得到一个方法未找到错误,如果我没有发送init,我会得到同样的错误。

所以,我没有很多JAVA的经验,我不明白错误信息。从命令行调用时,甚至在使用BAT文件执行时,我都可以使用JAR,但是当我这样做时,我无法将XML SOAP数组返回给我...

来自Java Doc:

PropertyHandler

  

public PropertyHandler(java.lang.String propFile) throws java.lang.Exception

     

使用属性文件设置所有程序变量。这个性质   文件是指标识用户ID和的第二个属性文件   安全文件数据。

     

参数:

     
      
  • propFile - 属性
  • 的XML文件   
     

投掷:

     
      
  • java.lang.Exception
  •   

getMessageList

public services.[...].GetResponseTypeDef getMessageList(java.lang.String par1,
                  java.lang.String comp_Op1,
                  java.lang.String parValue1 )
     

重写X_Properties以返回每个元数据的元数据列表   满足函数参数定义的查询的消息。

     

参数:

     
      
  • par1 - 参数枚举
  • 之一   
  • comp_Op1 - CompOp枚举之一
  •   
  • parValue1 - 比较值
  •   
     

返回:

     

元数据消息列表会议查询条件如果是,则返回null   遇到异常而不是抛出异常。

1 个答案:

答案 0 :(得分:2)

通话的结构如下:

<cfset Obj = createObject("java","client.PropHandler") />   
<cfset Meth = Obj.init(argfile).getMessageList(arg1,arg2,arg3)>

argfile变量是XML配置文件的路径,它还使用相对路径引用了另一个配置文件。一旦路径更改为绝对内部argfile,错误就解决了,我从堆栈跟踪(下面)中发现了此错误。

  

Stack Trace at   cf_getMsgs2ecfm497532872.runPage(E:\的Inetpub \ wwwroot_getMsgs.cfm:24)   在   cf_getMsgs2ecfm497532872.runPage(E:\ Inetpub \ wwwroot_getMsgs.cfm:24)

     

java.lang.reflect.InvocationTargetException at   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)     在   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)     在   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)     at coldfusion.runtime.java.JavaProxy.CreateObject(JavaProxy.java:156)     在coldfusion.runtime.java.JavaProxy.invoke(JavaProxy.java:63)at   coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272)at   cf_getMsgs2ecfm497532872.runPage(E:\的Inetpub \ wwwroot_getMsgs.cfm:24)     在coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)at   coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370)at   coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)at   coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279)     在   coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)     在   coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)     at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)at   coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)at   coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)     在   coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)     在coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)at   coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)at   coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)at at   coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)     在coldfusion.CfmServlet.service(CfmServlet.java:175)at   coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)     在jrun.servlet.FilterChain.doFilter(FilterChain.java:86)at   coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)     在   coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)     在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)     在   jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)     在   jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)     在   jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable(ThreadPool.java:320)     在   jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable(ThreadPool.java:428)     在   jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable(ThreadPool.java:266)     在jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)引起:    java.io.FileNotFoundException:.. \ data \ APIproperties.xml(系统   找不到指定的路径) at   java.io.FileInputStream.open(Native Method)at   java.io.FileInputStream。(FileInputStream.java:106)at   java.io.FileInputStream。(FileInputStream.java:66)at   client.PropertyHandler。(PropertyHandler.java:133)

感谢@Leigh和@imthepitts