2

Tomcat にデプロイされた Hibernate を使用する Spring ベースのアプリケーションがあります。これは、コンテナ内で実行したり、Tomcat にあるサーブレットを呼び出したりすると、問題なく機能します。applicationContext.xmlおよびその他の休止状態ファイルなどのすべての構成ファイルを読み取ります。しかし、Tomcat 環境外のシェル スクリプトから Java のメイン メソッドを実行する必要があります。そこで、それぞれのメソッドを呼び出す main メソッドを WAR ファイル内に作成しました。しかしapplicationContext、スクリプトを介して呼び出されると、それは null になります。

ApplicationContext appCtx = ApplicationContextProvider.getApplicationContext();

以下のようなシェルスクリプト

WAR_PATH="/usr/apache-tomcat-6.0.36/webapps/AdminTool/WEB-INF"
CLASSPATH=$WAR_PATH/classes
java -classpath $CLASSPATH:$WAR_PATH/lib/*: com.mycompany.controller.BatchController "$1"

Spring コンテキストをスクリプトから呼び出すにはどうすればよいですか?

どうもありがとう

4

2 に答える 2

1

ApplicationContext を使用して初期化する方法をアプリケーションに指示する必要がありますbeanfactory。使用しているSpringのバージョンによって異なります。バージョン 2 を使用している場合は、ドキュメントを参照してください


Spring 3ドキュメントでの Spring コンテナーのインスタンス化

ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});
于 2012-11-28T18:10:43.047 に答える
0

main メソッドを持つ Main というクラスがあるとします。クラスを次のようにマークします。

@org.springframework.context.annotation.Configuration
@ComponentScan(basePackages = {"com.your_base_package"})
@Component

main メソッドでは、次のように開始します。

 ApplicationContext ctx = new AnnotationConfigApplicationContext(Controller.class);
    ctx.getBean(Controller.class).invokeTransformationService(pipelineId);

@Configuration アノテーションは、すべてのアノテーションを処理します。@ComponentScan は、コンポーネントが検索される基本パッケージを Spring コンテナーに伝えるために必要です。@Component は、このクラスをコンポーネントにして、ApplicationContext から取得できるようにします。Spring コンテナーは、これらのアノテーションを使用してすべての @Components を探し、シングルトン (デフォルトではシングルトン) を作成し、それを ApplicationContext に登録します。

于 2017-11-06T01:44:53.777 に答える