以前のプロジェクトでは、ModelGlue と ColdSpring を何年も問題なく使用してきました。CF10 ModelGlue 3.2 を使用して、この新しい Web サイトを構築しています。
フレームワークをダウンロードしてインストールし、ローカルの開発用 MacBook で問題なくサイトを構築し、それをクライアントの環境に展開しようとしました... 悪いニュースです!
彼らは IIS を使用しており、一見すると Web ルートから提供されているように見えますが、CFAdmin の IIS ブードゥーと「/」マッピングを通じて提供されます。
http://b.company.com/ ---> D:\inetpub\wwwroot\a\b\index.cfm
フレームワークの配置を見つけるためにいじった後、私は落ち着きました:
D:\inetpub\wwwroot\a\b\coldspring
D:\inetpub\wwwroot\a\b\ModelGlue
でD:\inetpub\wwwroot\a\b\Application.cfc
:
this.mappings['coldspring'] = expandPath('./coldspring/');
this.mappings['ModelGlue'] = expandPath('./ModelGlue/');
実行すると、ColdSpring から取得しようとする最初の Bean の MG フレームワークのインスタンス化の問題が発生します (これは定期的に変更されます)。
Could not find the ColdFusion component or interface D:\inetpub\wwwroot\ModelGlue\gesture\factory\TypeDefaultingMapBasedFactory.cfc.
ただし、問題は実際には、インスタンス化に失敗した親 Bean (拡張) から発生しています。cfc を少し変更すると、いくつかの診断結果が得られます。
<cftry>
<!--- original line below --->
<cfset variables.beanInstance = createObject("component", getBeanClass()) />
<cfcatch type="any">
<cfdump var="#expandPath(".")#" />
<cfdump var="#getBeanClass()#" />
<cfdump var="#cfcatch#" />
<cfabort>
</cfcatch>
</cftry>
収量:
D:\inetpub\wwwroot\a\b
ModelGlue.gesture.module.XMLModuleLoaderFactory
{error report}
CS は を正常に見つけてインスタンス化しますD:\inetpub\wwwroot\a\b\ModelGlue\gesture\module\XMLModuleLoaderFactory
が、別のディレクトリ ( D:\inetpub\wwwroot\ModelGlue
) でその親を検索します。(なじみのない方のために説明すると、XMLModuleLoaderFactoryextends="ModelGlue.gesture.factory.TypeDefaultingMapBasedFactory"
はその cfc 定義の一部です。
私は機知に富んでいます。考えられるすべての構成変更を試し、ライブラリを移動したなどして、不足しました。外部の開発者として、彼らの Web サーバーを変更することはできませんが、App.cfc と以下のすべてを完全に制御できます。誰が何がうまくいかないのか考えていますか?
どんな助けでも大歓迎です。
UPDATE(おそらく解決済み)
ModelGlue のバージョンを3.1.299にロールバックしたところ、問題が解決したようです。
また、CFAdmin の「/」マッピングをオーバーライドして、アプリケーション パスを指すようにしました。
アプリケーション.cfc:
this.mappings['coldspring'] = expandPath('./coldspring/');
this.mappings['ModelGlue'] = expandPath('./ModelGlue/');
this.mappings['/'] = expandPath('.');
MG 3.2 の何が問題だったのかはよくわかりませんが、3.1.299 が役に立ったようです。