我在将countries.xml
文件包含到我的GWT Web应用程序时遇到问题。
在应用服务器端,我使用JAXB
从此文件中收集数据。在eclipse的本地构建中一切正常,但在部署到测试环境后,Unmarshaller无法找到提到的文件。
我不认为该文件包含在所有部署中。
问题是:我应该在哪里放置xml文件以成功包含在应用程序部署中?
如果缺少某些信息,请告诉我相关信息。
EDIT1:
加载文件:
List<CountryDTO> list = new ArrayList<CountryDTO>();
CountryXML countryXML;
try {
JAXBContext context = JAXBContext.newInstance(CountryXML.class);
Unmarshaller un = context.createUnmarshaller();
countryXML = (CountryXML) un.unmarshal(new File("target/classes/server/xml/countries.xml"));
for (CountryXML country : countryXML.getCountries()) {
list.add(convertToDTO(country)); //Simple converting from XmlRootObject to DTO
}
}
catch (JAXBException e) {
e.printStackTrace();
}
JUnit测试:
public class XMLDataManagerTest {
@Test
public void getCountries() {
XMLDataManager xmlDataManager = new XMLDataManager();
List<CountryDTO> coutries = xmlDataManager.getCountries();
System.out.println(coutries.toString());
}
}
此测试的输出是我想要的。
答案 0 :(得分:1)
首先,我相信该文件已成功上传。无论如何,您可以通过从App Engine下载应用程序来检查它。
./appcfg.sh -A <your_app_id> -V <your_app_version> download_app <output-dir>
您可以找到更多详情here。
似乎应用程序布局在本地环境和云中是不同的。尝试通过ClassLoader
加载您的文件。
getClass().getClassLoader().getResourceAsStream("/server/xml/countries.xml");
或通过ServletContext
。
getServletContext().getResourceAsStream("/server/xml/countries.xml");
似乎App Engine的首选解决方案是ServletContext
。
使用
java.io.File
或\ n阅读App Engine资源文件javax.servlet.ServletContext.getResource/getResourceAsStream
。他们是 无法通过Class.getResourceAsStream()
访问。
答案 1 :(得分:0)
已解决,如下:
src/main/webapp/resources/countires.xml
移至WEB模块,路径: URL countriesXMLURL = this.getServletContext().getResource("/resources/countries.xml")
代码示例:
:
JAXBContext context = JAXBContext.newInstance(CountryXML.class);
Unmarshaller un = context.createUnmarshaller();
countryXML = (CountryXML) un.unmarshal(countriesXMLURL);
:
import numpy as np
import pandas as pd
filename = 'file01'
numbers = np.random.randn(5) # this data could be of any length, ~100
tf = pd.DataFrame({'labels': filename , 'numbers': numbers})
In [8]: tf
Out[8]:
labels numbers
0 file01 -0.176737
1 file01 -1.243871
2 file01 0.154886
3 file01 0.236653
4 file01 -0.195053
现在一切正常。