2016-04-26 6 views
1

web.xmlファイルにcontext-paramとinit-paramの変数を指定するフィルタがあります。この変数を、アプリケーションの起動時にプロパティファイルから取得した値に置き換えたいとします。起動時にweb.xml変数を代入する

私のweb.xmlはそのようなものです:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 

<display-name>APP NAME</display-name> 
<description> 
    App description 
</description> 
<context-param> 
    <param-name>my-param-name</param-name> 
    <param-value>${my-param-name}</param-value> 
</context-param> 
<filter> 
    <filter-name>Authentication Filter</filter-name> 
    <filter-class>my.app.Filter</filter-class> 
    <init-param> 
     <param-name>filter-var-name</param-name> 
     <param-value>${filter-var-value}</param-value> 
    </init-param> 
</filter> 
... 
</web-app> 

そして、ここでweb.properties

my-param-name=${PARAM_VALUE_TO_BE_SETTED_BY_TOOL} 
filter-var-value=${FILTER_VALUE_TO_BE_SETTED_BY_TOOL} 

は展開がどのように動作するかです:

1)展開ツールは、特定のを読んでプロパティファイルを開き、変数をPRODまたはDev値(そのツールで設定された値)に置き換え、そのファイルをJBossのアプリケーションモジュールにプッシュします。

2)JBossでアプリケーションのデプロイを開始します。 Web.xml変数を起動時にプロパティファイルの値に置き換える必要があります。

ありがとうございます。

+0

あなたはなぜそれをやりたいのですか?単に「webapp web.xmlに迷惑をかけない」のであれば、これらの値にコンテキストパラメータを使用し、デプロイメント時にコンテキストを設定することを考慮する必要があります( – Jan

+0

)。 .xmlの代わりに.xmlを使用するか、フィルタリングして、代わりにプロパティの値を読み取るコンテキストパラメータにアクセスします。 – Jan

+0

最初のものは私が今持っているものですが、PRODとDEVのために1つのwarファイルを持っていなければならないためです。私はすべてのフィルタを再コード化できないので、2番目の提案を実装できません。 –

答えて

0

サーブレットフィルタを拡張してweb.xmlフィルタ変数に値を設定するラップされたフィルタを作成しました。これらの値は、DEVおよびPROD環境の外部プロパティファイルから取得されます。

は、web.xml:

... 
<filter> 
    <filter-name>CAS Authentication Filter</filter-name> 
    <filter-class>my.package.WrappedFilter</filter-class> 
    <init-param> 
     <param-name>key</param-name> 
     <param-value>wrappedCasFilter</param-value> 
    </init-param> 
    <init-param> 
     <param-name>class</param-name> 
     <param-value>org.jasig.cas.client.authentication.AuthenticationFilter</param-value> 
    </init-param> 
</filter> 
... 

プロパティファイル:

wrappedCasFilter.init.casServerLoginUrl = https://URL 

私は私があなたにWrappedFilterのコンテンツを表示cant'tこと悲しいです。

関連する問題