public int getUploadFile(Reportfile reportfile) {//上传文件
// TODO Auto-generated method stub
Session session=super.getSession();
Transaction transaction=session.beginTransaction();
Reportfile rf=new Reportfile();
rf.setFilename(reportfile.getFilename());
rf.setFilesize(reportfile.getFilesize());
rf.setMyfile(null);
session.save(rf);
session.flush();
session.refresh(rf, LockMode.UPGRADE);
InputStream inputStream;
try {
inputStream = reportfile.getMyfile().getBinaryStream();
ByteArrayOutputStream by = new ByteArrayOutputStream(reportfile.getFilesize());
byte[] bf=new byte[102400];
while ((inputStream.read(bf))!=-1) {
by.write(bf);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ot.write(myfile);
// super.getHibernateTemplate().save(reportfile);
transaction.commit();
session.flush();
session.close();
return reportfile.getId();
}
在session.refresh(rf, LockMode.UPGRADE);之后的那部分代码应该怎么写呢,
我这样子会报错,传过来的那个对象里reportfile.getMyfile()为Blob类型
如何将这个Blob分段插进去,急 哪位大哥知道告我下,谢谢
// TODO Auto-generated method stub
Session session=super.getSession();
Transaction transaction=session.beginTransaction();
Reportfile rf=new Reportfile();
rf.setFilename(reportfile.getFilename());
rf.setFilesize(reportfile.getFilesize());
rf.setMyfile(null);
session.save(rf);
session.flush();
session.refresh(rf, LockMode.UPGRADE);
InputStream inputStream;
try {
inputStream = reportfile.getMyfile().getBinaryStream();
ByteArrayOutputStream by = new ByteArrayOutputStream(reportfile.getFilesize());
byte[] bf=new byte[102400];
while ((inputStream.read(bf))!=-1) {
by.write(bf);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ot.write(myfile);
// super.getHibernateTemplate().save(reportfile);
transaction.commit();
session.flush();
session.close();
return reportfile.getId();
}
在session.refresh(rf, LockMode.UPGRADE);之后的那部分代码应该怎么写呢,
我这样子会报错,传过来的那个对象里reportfile.getMyfile()为Blob类型
如何将这个Blob分段插进去,急 哪位大哥知道告我下,谢谢
不报错
就是没插进去
// TODO Auto-generated method stub
Session session=super.getSession();
Transaction transaction=session.beginTransaction();
Blob b = reportfile.getMyfile();
byte[]bb=new byte[1];
bb[0]=1;
reportfile.setMyfile(Hibernate.createBlob(bb));
session.save(reportfile);
session.flush();
session.refresh(reportfile, LockMode.UPGRADE);
InputStream inputStream;
try {
inputStream = b.getBinaryStream();
ByteArrayOutputStream by = new ByteArrayOutputStream(reportfile.getFilesize());
byte[] bf=new byte[102400];
while ((inputStream.read(bf))!=-1) {
by.write(bf);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ot.write(myfile);
// super.getHibernateTemplate().save(reportfile);
transaction.commit();
session.flush();
session.close();
return reportfile.getId();
我改了下代码终于报错了
Hibernate: insert into Banck_DB.dbo.reportfile (filename, filesize, myfile) values (?, ?, ?) select scope_identity()
Hibernate: select reportfile0_.id as id47_0_, reportfile0_.filename as filename47_0_, reportfile0_.filesize as filesize47_0_, reportfile0_.myfile as myfile47_0_ from Banck_DB.dbo.reportfile reportfile0_ with (updlock, rowlock) where reportfile0_.id=?
2010-10-13 19:46:38,631 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported data conversion.
说的是SQL2000 不支持数据类型的转换BLOB 是 ORACLE 里的大容量的数据格式吧
可报错是说SQL2000 可 SQL2000数据格式并没有BLOB这个格式
可以传小文件,大文件的时候
ByteArrayOutputStream by = new ByteArrayOutputStream(reportfile.getFilesize());
这句转换将报错
Struts Problem Report
Struts has detected an unhandled exception: Messages: Java heap space
File: java/io/ByteArrayOutputStream.java
Line number: 60
--------------------------------------------------------------------------------Stacktraces
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:306)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
java.lang.Thread.run(Thread.java:619)
java.lang.OutOfMemoryError: Java heap space
java.io.ByteArrayOutputStream.(ByteArrayOutputStream.java:60)
com.qhkj.bank.dao.hibernate.ReportDaoHibernate.getUploadFile(ReportDaoHibernate.java:155)
com.qhkj.bank.manager.impl.ReportManagerImpl.getUploadFile(ReportManagerImpl.java:49)
com.qhkj.bank.web.actions.UploadMyfile.getUploadFile(UploadMyfile.java:140)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个.
http://dev.firnow.com/course/3_program/java/javajs/200861/118523.html请看 如何设置 HEAP
BOLB存入数据库网上 资料很多 你可以查查
传37MB没有问题了
再大又报错了
与连接方式没有太大关系
public int getUploadFile(Reportfile reportfile) {//上传文件
// TODO Auto-generated method stub
Session session=super.getSession();
Transaction transaction=session.beginTransaction();
Blob b = reportfile.getMyfile();
byte[]bb=new byte[1];
bb[0]=1;
reportfile.setMyfile(Hibernate.createBlob(bb));
session.save(reportfile);
session.flush();
session.refresh(reportfile, LockMode.UPGRADE);
InputStream inputStream;
try {
inputStream = b.getBinaryStream();
byte[] bf=new byte[10240];
int n;
while ((n=inputStream.read(bf))!=-1) {
ByteArrayOutputStream by = new ByteArrayOutputStream(n);
by.write(bf,0,n);
by.flush();
by.close();
}
bf=null;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ot.write(myfile);
// super.getHibernateTemplate().save(reportfile);
transaction.commit();
// session.flush();
// session.close();
return reportfile.getId();
}
就是不用Blob类型
直接在用byte[]
然后借助Blob类型转换流
也可以
但是也只能传37左右
我试试65MB的就不行还有就是网上的那个修改Xmn -Xms -Xmx
我在环境变量配置
但是不起作用
还有时候在tomacat理配置
但是我在里面没有找到catalina.bt文件
我的是win7 64位系统
有几个是用proc写的
我sql不怎么行,那个function都没有用过
此处写得明白些,更改的确有用,
但是新问题
丫滴,我是直接存数据库的
远程不行,看样子还得经过一次服务器