私はJEE5 Webサービスの単体テストを作成中です。 Webサービスの動作は、web.xml
ファイルで設定された属性に依存します。私はweb.xml
を一定の部分とテスト間で変更された部分に分割したいと思っています。web.xmlにファイルを含める
実際に可能かどうかを確認するために、welcome-file-list
属性を分割できるかどうかを確認しようとしました。
web.xmlの
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<web-app version="2.5" 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">
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>NewWebService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>NewWebService</servlet-name>
<url-pattern>/NewWebService</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
&fragment;
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
fragment.xmlは、しかし、私はweb.xml
ファイルに検証エラーを取得しています:私は次のように作ってみたsome instructions I foundを使用して:
要素タイプ "web-app"に対して属性 "version"を宣言する必要があります。 [7]
要素タイプ "web-app"に対して属性 "xmlns"を宣言する必要があります。 [7]
要素タイプ "web-app"に対して属性 "xmlns:xsi"を宣言する必要があります。 [7]
要素タイプ "web-app"に対して属性 "xsi:schemaLocation"を宣言する必要があります。 [7]
私は、Webアプリケーションv2.3デベロッパーのDTDと同じファイル内のWebアプリv2.5のスキーマを使用して、問題があることを感覚を得るが、私は私がするつもりか分かりませんそれを回避することができます。
(小さな塊にweb.xmlファイルを分割内の任意の他のアプローチは、あまりにも歓迎されるでしょう!)
更新
私はそうのようなDTDの参照を削除した場合...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app[
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<web-app version="2.5" 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">
etc, etc, etc.
:検証プロセスはweb-app_2_5.xsd
ファイルを無視するかのようにそれが表示されます...
要素タイプ "web-app"を宣言する必要があります。 [5]
エレメントタイプ "listener"を宣言する必要があります。 [6]
要素タイプ "listener-class"を宣言する必要があります。 [7]
要素タイプ "servlet"を宣言する必要があります。 [9]
など、など、など
Do not do this this!基本的にTomcat固有のセキュリティ悪用を利用しています。これは新しいTomcatバージョンで修正され、必ずしも別のサーバに存在するとは限りません。言い換えれば、このようなweb.xmlを持つwebappはポータブルではありません。関連issueレポート:https://bugzilla.redhat.com/show_bug.cgi?id=1069911 – BalusC