java - Soap 服务无法写入 XML 文件
问题描述
在 Tomcat v9.0 服务器上的 Axis 引擎上运行的 Simple Soap 服务需要读取和写入 XML 文件。我在 Eclipse 中像动态 Web 项目一样开发了肥皂服务,因此 XML 文件位于 WebContent->WEB-INF->resources->...
当我读取文件时,一切正常,但是当我想写入文件时,我得到 InvocationTargetException。由于我正常读取文件,我想我在写入文件时没有像应该那样打开流,所以任何人都可以指导我如何正确地做到这一点?
这是读取文件的方法,这很有效:
public Station deserialization(String name, String path) {
Station s=null;
try {
URL url=getClass().getClassLoader().getResource(path+File.separator+name+".xml");
InputStream is=url.openStream();
XMLDecoder decoder = new XMLDecoder(is);
s=(Station) decoder.readObject();
decoder.close();
} catch (Exception e) {
Main.LOGGER.info("Station deserializaton was not successful!");
}
return s;
}
这是写入文件的方法,这不起作用:
public boolean serialize(Station s, String path) {
try {
URL url=getClass().getClassLoader() .getResource(path+File.separator+s.getName()+".xml");
URLConnection con=url.openConnection();
con.setDoOutput(true);
OutputStream out=con.getOutputStream();
XMLEncoder encoder = new XMLEncoder(out);
encoder.writeObject(s);
encoder.close();
} catch (Exception e) {
Main.LOGGER.info("Station serialization was not successful!");
return false;
}
return true;
}
我真正的问题是如何在读取文件时使用相同的原理而对写入文件不起作用?两种方法中的文件路径相同。
解决方案
我发现了问题所在。原来您可以使用 URL 读取文件,但不能写入 URL 或 URLConnection。我不得不使用 FileOutputStream 写入文件:
XMLEncoder encoder=new XMLEncoder(new FileOutputStream("file_path"));
如果您希望 Web 服务使用它们,您也可以将文件保存在 WebContent->WEB-INF 中(如果您在 Eclipse 中开发 Web 服务),因为它会复制它们。请密切注意您提供的路径,仔细检查它是否是正确的!
推荐阅读
- c# - SqlException:无法将值 NULL 插入列“CarId”、表“AutoServiceDb.dbo.ServiceOrders”;列不允许空值。插入失败
- python - 仅当辅助值不为空或 nan 时才更新主值
- r - R根据另一个数据框的完全匹配替换列的值
- asp.net - .NET Framework 4.7 与 .NET Core 3.0 中 HTTP 请求的不同性能
- python - 如果文件以 _ 开头,则无法使用 xml.etree.ElementTree 解析 xml 文件
- amazon-web-services - 如何将物联网数据存储到 Amazon RDS MySQL 数据库中?
- python - PyCharm可以增加终端的最大线宽吗?
- python - 如何找到使用 Gmail API 获取电子邮件的附件 ID?
- c++ - 在 C++ 中对字符串的字符进行反向迭代
- react-native - 无效的 Redirect_uri 对于使用本机反应的 instagram 登录