2016-08-17 13 views
0

Grails 2.3.7アプリケーションに、特定のシナリオのリンクのアプリケーションコンテキストがありません。私が開発している間は、すべてうまくいきます。アプリケーションをTomcat 8にデプロイし、またはcreate-dropというデータソースでdbCreateで起動すると、すべて正常に動作しています。しかし、Tomcatを再起動(または再デプロイ)し、データソース内のdbCreateをnoneに設定すると、アプリケーションコンテキスト内でリンクが生成されます。 は、私が開発中とdbCreate="create"リンク/application/controller/actionとして生成されますが、再起動リンクが/controller/actionとして生成された後dbCreate="none"を使用した場合、application一部が欠落しているため、リンクのターゲットを見つけることができませんを使用している場合、リンクを作成する<g:link controller="controller" action="action">Link Text</g:link>を使用しています。 CSSファイルなどのアセットの場合、application部分を含めて、リソースのリンクが正しく生成されます。 Config.groovyにgrails.app.contextgrails.serverURLを設定しようとしましたが、成功しませんでした。この問題を解決するためのヒントに感謝したいと思います。 (SOを検索すると、反対の方向の質問が返され、リンクのアプリケーション部分を省略する方法を尋ねると、これは私の望むものではありません)Grails Appに再デプロイメント後のリンクのアプリケーションコンテキストがありません

更新:tomcat、 grails run-appを実行しているときと同じ動作があります。

アップデート:私は展開の戦争でもrun-appprod run-appとでこれを再現することができますが、エラーは、Webアプリの2 3の開始時に、多分、毎回発生しませんので、私はそれがタイミングの問題かもしれないと思いますサーブレットのコンテキストでは、私はまだもっと知りません。

Upadte:デバッグでは、DefaultLinkGeneratorで、contextPathは空の文字列と同じですが、nullまたは 'application'である必要があります。

更新:grails bean grailsLinkCreatorは、アプリケーションの起動時に正しくインスタンス化されます。このBeanはCachingLinkGeneratorに実装され、そのスーパークラスはDefaultLinkGeneratorです。起動時にはいつでも、このBeanの作成と初期化後に、変数contextPathDefaultLinkGeneratorに空のStringに設定されますが、どこから、いつ、いつ、なぜかわかりません。

答えて

-1
私はまだ修正(または見つける。)この問題が発生した理由を、私はSOに、ここでの回避策を見つけたことができません

Grails - override a bean property value in resources.groovy

関連する部分がある:

変更したい場合ブートストラップが実行された豆の前に、あなたが BeanPostProcessorを使用することができます[...]

のsrc /グルーヴィー/ yourpkg/CustomBeanPostProcessor:

import org.springframework.beans.factory.config.BeanPostProcessor 

class CustomBeanPostProcessor implements BeanPostProcessor{ 

    @Override 
    Object postProcessBeforeInitialization(Object bean, String beanName) { 
     return bean 
    } 

    @Override 
    Object postProcessAfterInitialization(Object bean, String beanName) { 
     if(beanName == 'messageSource') { 
      bean.setFallbackToSystemLocale = true 
     } 
     return bean 
    } 
} 

resources.groovy:

beans = { 
    customBeanPostProcessor(CustomBeanPostProcessor) 
} 
+0

潜在的な解決策へのリンクは常に歓迎ですが、そう、あなたの仲間を(// meta.stackoverflow.com/a/8259)[リンクの周りのコンテキストを追加]してくださいユーザーはそれが何であるか、なぜそれが存在するのか、いくつかの考えを持っています。ターゲットサイトに到達できない場合や、永続的にオフラインになる場合は、常に重要なリンクの最も関連性の高い部分を引用してください。外部サイトへのリンク以上のものがあることを考慮に入れてください。なぜ、どのように答えが削除されますか?(// stackoverflow.com/help/deleted-answers)という理由が考えられます。 – FrankerZ

+0

@FrankerZヒントのおかげで、あなたの提案に基づいて私の答えを編集しました。 – Calon

関連する問題