resin 3.0.24 下无法对已存在Html文档进行写入,改为jboss Eap 进行文档刷新,由WebService发送消息.
异常代码:
FileOutputStream fo=new FileOutputStream(file);
完整代码:
public boolean write(File file,String webContent){
//目录测试
boolean isok=false;
File parentFile= file.getParentFile();
if(parentFile.exists()==false){
parentFile.mkdirs();
}
try {
FileOutputStream fo=new FileOutputStream(file);
//utf-8
java.io.OutputStreamWriter or=new java.io.OutputStreamWriter(fo,this.getFileEncode());
java.io.BufferedWriter bo=new java.io.BufferedWriter (or);
//通过字符流读取Html文档,解决换行问题
java.io.StringReader ir=new java.io.StringReader(webContent);
java.io.BufferedReader br=new java.io.BufferedReader(ir);
String brString= br.readLine();
while(brString!=null){
bo.write(brString);
//增加换行
bo.newLine();
brString= br.readLine();
}
bo.flush();
ir.close();
br.close();
//
bo.close();
or.close();
fo.close();
isok=true;
} catch (FileNotFoundException ex) {
isok=false;
Logger.getLogger(LocFileBIOService.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
isok=false;
Logger.getLogger(LocFileBIOService.class.getName()).log(Level.SEVERE, null, ex);
}
return isok;
}
改为由 jboss eap 进行HTML文档刷新.
package apps.siteStatic.htmlcreater.server.ws.soap;
import javax.jws.WebMethod;
import javax.jws.WebService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import apps.siteStatic.htmlcreater.dao.HtmlDocFile;
import apps.siteStatic.htmlcreater.server.domain.HtmlDocFileDomain;
/*
* 提供Html文档刷新服务
*
* 解决 resin 文件无法刷新问题
*
* resin 3.0.24 无法 对webapps目录外已存在文件进行写入
*
*
*/
@WebService
public class HtmlDocFlushWs {
private Logger log=LogManager.getLogger(HtmlDocWebFileRestWs.class);
@WebMethod
public int flush( String uuid) {
// TODO Auto-generated method stub
log.info("刷新文档:"+uuid);
HtmlDocFileDomain d=new HtmlDocFileDomain();
HtmlDocFile df=d.getDoc(uuid);
int rs=0;
if(df==null){
//rs="该文档不存在,或未创建静态档案,文档标识:"+docUUid +".";
return -1;
} else{
rs=d.flush(uuid);
}
return rs;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}