2012-03-11 7 views
1

JAXBを使用してXMLファイルをマーシャリングするサーブレットがあります。私の問題は、マーシャラーであるXMLファイルに完全なローカルパスを与えることなく、XMLファイルを非整列化またはマーシャリングできないことです。この問題は、XMLファイルのローカルパスを編集する必要がなく、私の友人にプロジェクトを配信できないということです。 uは私が使用する必要が見ることができるように「/Users/martin/NetBeansProjects/Web-Mandatory-Assignment-Part1/web/resources/xml/Cars.xml」として非整列化のための私のコードは、このカスタムXMLファイルをサーブレットで取得する方法

ObjectFactory factory = new ObjectFactory(); 
CarList cl = factory.createCarList(); 

try { 
    javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cl.getClass().getPackage().getName()); 
    javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller(); 
    cl = (CarList) unmarshaller.unmarshal(new java.io.File("/Users/martin/NetBeansProjects/Web-Mandatory-Assignment-Part1/web/resources/xml/Cars.xml")); //NOI18N 
} catch (javax.xml.bind.JAXBException ex) { 
    java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N 
} 

のように見えますファイルのパスですが、これをやりたいのは、代わりに 'xml/resources/Cars.xml'のようなsomehtingを使うことです。どうすればいいですか?

+3

あなたはあなたのアプリケーションのリソースとしてファイルを埋め込むしようとしたクラスローダでそれをロードしていますか? –

+2

これは@GuillaumePoletが話していることです: 'http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)' – bezmax

+0

いいえ、私はそれを試していない。私はその方法を見て、あなたに戻ってきます:) –

答えて

3

ServletContextインターフェイスをjavax.servletパッケージで使用できます。コードは以下のこのクラスの使用のインスタンスにアクセスするため:

  • getResource(String)
  • getResourceAsStream(String)
  • getRealPath(String)

用:

http_request_instance.getServletContext(); 

など、このインタフェースに有用な方法が存在します詳細は

を参照してください。
関連する問題