- PR -

warファイルに必要なxmlが入らない

1
投稿者投稿内容
TK
会議室デビュー日: 2007/08/24
投稿数: 5
投稿日時: 2007-08-24 11:13
Webサービスを作成しようとしているのですが、うまくいかない点があるのでお知恵拝借します。

Eclipseでwarファイルを作成し、
WebLogicサーバにデプロイしてクライアントから呼び出したところ、
エラーになってしまいました。
warファイルの中を見ると、web.xmlなどが自分が修正したものではなく
自動生成されたものでして、そのほか必要なxmlファイルが入っておらず、
これが原因のようです。

warファイル中のWEB-INF直下にxmlを入れたいのですが、
何かいい解決方法をご存じないでしょうか。

ちなみに<FileSet>で入ってほしいxmlファイルを指定しても
WEB-INF/classesの下に入ってしまい、
実行時には参照されていない模様でした。

ディレクトリ構成は以下のとおりです。

├ant     build.xml
├sources   (${source.dir}のディレクトリ)
│└xxx
│ ├login  WEBサービスのソース
│ └appctl  ApplicationController.java、applicationController.xml
└webapps
 ├META-INF  application.xml、context.xml、weblogic-application.xml、MANIFEST.MF
 └WEB-INF  web.xml、weblogic.xmlなど各種xmlファイル(${web.inf.dir}のディレクトリ)
  ├classes クラスファイル出力先、warファイル出力先
  └lib   ライブラリ

build.xmlは以下のとおりです。
コード:
  <!-- コンパイルを行う -->
  <target name="compile" depends="clean" description="コンパイル実行">
    <javac srcdir="${source.dir}"
        destdir="${web.inf.dir}/classes"
        classpath="${classpath.lib}"
        debug="on" />
    <copy todir="${web.inf.dir}/classes">
      <fileset dir="${source.dir}">
        <include name="**/*.xml" />
      	<include name="**/*.xsd" />
      </fileset>
    </copy>
  </target>

  <!-- サービスのビルド -->
  <target name="build-service" depends="compile"  description="サービスのビルド">
    <jwsc srcdir="${source.dir}"
	  destdir="${web.inf.dir}/classes"
	  keepGenerated="yes"
	  classpath="${classpath.lib}"
	  debug="on">
      <module  name="loginService">
        <jws file="xxx/login/LoginWebService.java"/>
        <FileSet dir="${source.dir}">
          <!-- applicationController.xmlをwarファイルに入れる -->
          <include name ="xxx/appctl/applicationController.xml"/>
        </FileSet>
      </module>
      <compilerarg value="-Xlint:unchecked"/>
    </jwsc>
  </target>



よろしくお願いします。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-08-24 11:34
引用:

TKさんの書き込み (2007-08-24 11:13) より:

ちなみに<FileSet>で入ってほしいxmlファイルを指定しても
WEB-INF/classesの下に入ってしまい、
実行時には参照されていない模様でした。

コード:
    <copy todir="${web.inf.dir}/classes">
      <fileset dir="${source.dir}">
        <include name="**/*.xml" />
      	<include name="**/*.xsd" />
      </fileset>
    </copy>




コピー先がWEB-INF/classesになってますよね。

それと、ファイルはともかく、親フォルダまでワイルドカードを使ってしまうと、
複数のフォルダにそれぞれ格納されているファイルを、
1カ所に集めてしまうことになりませんか?
TK
会議室デビュー日: 2007/08/24
投稿数: 5
投稿日時: 2007-08-24 12:06
ご指摘ありがとうございます。
サンプルをまねして書いたためでして、実際には何もコピーしていません。

したいのは元々WEB-INFの下にあるxmlを、warファイル中でもWEB-INFの下に入れることなので、本質的に関係ないと思います。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-08-24 13:38
引用:

サンプルをまねして書いたためでして、


それはそれで大切なことですが、
それだけでここにきてしまっては、丸投げと変わらないでしょう。

人とやりとりしようとするのなら、
明らかに何もしていないコードくらい、
あらかじめ取り除いておいた方が話がスムーズに進むと思いますよ。

さて、jwscってなんじゃい、とGoogleにお伺いをかけてみたところ、
WeblogicのAntは拡張されているんですね。
「jwsc descriptor」で検索してみると、幸せになれるかもしれません。

すみませんが、私はEclipseにすっぴんのAntを使っているもので、
これ以上はお役に立てそうにないです。
TK
会議室デビュー日: 2007/08/24
投稿数: 5
投稿日時: 2007-08-24 18:53
引用:

Edossonさんの書き込み (2007-08-24 13:38) より:
引用:

サンプルをまねして書いたためでして、


それはそれで大切なことですが、
それだけでここにきてしまっては、丸投げと変わらないでしょう。

人とやりとりしようとするのなら、
明らかに何もしていないコードくらい、
あらかじめ取り除いておいた方が話がスムーズに進むと思いますよ。


すみません。
サンプルもどんな意味か考えながら使っているつもりなので、
「丸投げ」と思われたのは残念ですが、確かに余計でしたね。
以後気をつけます。

引用:

さて、jwscってなんじゃい、とGoogleにお伺いをかけてみたところ、
WeblogicのAntは拡張されているんですね。
「jwsc descriptor」で検索してみると、幸せになれるかもしれません。



descriptorを使ってもうまくいかなかったのですが、
その後もほかの人と相談したりして試行錯誤しながら
なんとか自己解決しました。

jwscを使うと、自動的に関連するxmlファイルなどが生成されて
warファイルにまでしてくれるのですが、
<module name="loginService" explode="true">
と書くと、warファイルは作成されずに
warファイルの中身が展開されたような状態で止まります。
そこからAntのすっぴんのwarを使って、
中に入れたいファイルを自分で指定してwarファイルを作成するという方法です。

お騒がせしました。
1

スキルアップ/キャリアアップ(JOB@IT)