快死人了,大家帮忙看看吧

losedirection 2008-05-08 11:58:04
我的action如下:
public class AgentAction extends Action {

Agentbean agentbean;

public Agentbean getAgentbean() {
return agentbean;
}

public void setAgentbean(Agentbean agentbean) {
this.agentbean = agentbean;
}

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String l_id=Util.filter(request.getParameter("login_id"));
String c_id=Util.filter(request.getParameter("call_id"));
String work_id=Util.filter(request.getParameter("work_id"));
String r_name=agentbean.RecordName(work_id);
if(!r_name.equals("")){
agentbean.InsertRecord(l_id,c_id,work_id,r_name,work_id);
}else{
RecordNameThread rnt = new RecordNameThread(l_id,c_id,work_id);
rnt.start();
}
return null;
}


}


class RecordNameThread extends Thread{
private String l_id;
private String c_id;
private String w_id;
private String r_name;
private boolean flag = true;
private int num = 0;
public RecordNameThread(String l_id,String c_id,String w_id){
this.w_id = w_id;
this.l_id = l_id;
this.c_id = c_id;
this.w_id = w_id;
}
public void run(){
while(flag){
r_name = (new Agentbean()).RecordName(w_id);
if(!r_name.equals("")){
(new Agentbean()).InsertRecord(l_id,c_id,w_id,r_name,w_id);
flag = false;
}else{
if(++num<4){
flag = false;
}
}
try {
this.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}


}

}
}
javabean如下:
public String RecordName(String w_id){

String ip="195.67.44.83";
String time = new SimpleDateFormat("\\1\\0\\yyyyMMdd").format(new Date());
String url = "\\\\"+ip+""+time+"\\"+w_id+"\\";
System.out.println("url:"+url);
File ftpfile= new File(url);

//File ftpfile = new File("e:\\f");
String [] filenames = ftpfile.list();
System.out.println("filenames:"+filenames);
String filename="";
if(filenames!=null){
filename = filenames[filenames.length - 1] + "";
}
System.out.println("filename:"+filename);
return filename;
}
/*
*将CALLID和录音文件名插入数据库
*/
public boolean InsertRecord(String l_id,String c_id,String work_id,String r_name,String w_id){
boolean return_value=false;
try {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//if(jdbcTemplate.update(sql)>0)
return_value=true;
String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
String url = ""+time+"/"+w_id+"/"+r_name+"";
String sql="update t_agent_call_log set record_file_name ='"+url+"' where t_agent_login_id='"+l_id+"' and t_agent_call_id='"+c_id+"'";
jdbcTemplate.update(sql);

System.out.println("InsertRecord:"+sql);
} catch (Exception ex) {
ex.printStackTrace();
}
return return_value;
}、
当有多用户访问这个action的时候,打印出的update语句,有时候没有提交,不知道为是么,应该是多线程的牙,怎么可能没提交呢,有高手帮我解决下码?我在这里谢过了,我的MSN:directionwang◎hotmail.com,或者email:chenggong_3738◎163。com
...全文
235 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
临远 2008-05-08
  • 打赏
  • 举报
回复
多线程,延迟了?
还是堵塞了?
老紫竹 2008-05-08
  • 打赏
  • 举报
回复
那就commit一下看看

还有
ex.printStackTrace();

难道没有异常报出来吗?
kokobox 2008-05-08
  • 打赏
  • 举报
回复
应该是lz没有做事务处理

仔细阅读一下下面的文章:

http://hi.baidu.com/lxx2844/blog/item/2545be9b64cb3ab6c8eaf401.html
kokobox 2008-05-08
  • 打赏
  • 举报
回复
我找了很久,错误原因可能是两点:

1.数据有问题(但是你说没有问题)

2.你没有配置事务,你应该配置一下(org.springframework.jdbc.datasource.DataSourceTransactionManager)
evoloyeu 2008-05-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 beiouwolf 的回复:]
首先确定哪里的问题
在你觉得可疑的地方加句System.out.println()

常规的调试方法,还是要先学习一下的
[/Quote]
x_y_qing 2008-05-08
  • 打赏
  • 举报
回复
太长了。。看都看晕。。。
losedirection 2008-05-08
  • 打赏
  • 举报
回复
// Inner classes
class RowCallbackHandlerResultSetExtractor implements ResultSetExtractor {

// Fields
private final RowCallbackHandler rch;

// Constructors
public RowCallbackHandlerResultSetExtractor(RowCallbackHandler rch) { }

// Methods
public Object extractData(ResultSet rs) throws SQLException { return null;}
}

class ArgTypePreparedStatementSetter implements PreparedStatementSetter, ParameterDisposer {

// Fields
private final Object[] args;
private final int[] argTypes;

// Constructors
public ArgTypePreparedStatementSetter(Object[] args, int[] argTypes) { }

// Methods
public void setValues(PreparedStatement ps) throws SQLException { }
public void cleanupParameters() { }
}

class ArgPreparedStatementSetter implements PreparedStatementSetter, ParameterDisposer {

// Fields
private final Object[] args;

// Constructors
public ArgPreparedStatementSetter(Object[] args) { }

// Methods
public void setValues(PreparedStatement ps) throws SQLException { }
public void cleanupParameters() { }
}

class SimpleCallableStatementCreator implements CallableStatementCreator, SqlProvider {

// Fields
private final String callString;

// Constructors
public SimpleCallableStatementCreator(String callString) { }

// Methods
public CallableStatement createCallableStatement(Connection con) throws SQLException { return null;}
public String getSql() { return null;}
}

class SimplePreparedStatementCreator implements PreparedStatementCreator, SqlProvider {

// Fields
private final String sql;

// Constructors
public SimplePreparedStatementCreator(String sql) { }

// Methods
public PreparedStatement createPreparedStatement(Connection con) throws SQLException { return null;}
public String getSql() { return null;}
}

class CloseSuppressingInvocationHandler implements InvocationHandler {

// Fields
private final Connection target;

// Constructors
public CloseSuppressingInvocationHandler(JdbcTemplate target, Connection null) { }

// Methods
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return null;}
}
}
losedirection 2008-05-08
  • 打赏
  • 举报
回复

public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {

// Fields
private NativeJdbcExtractor nativeJdbcExtractor;
private boolean ignoreWarnings;
private int fetchSize;
private int maxRows;

// Constructors
public JdbcTemplate() { }
public JdbcTemplate(DataSource dataSource) { }
public JdbcTemplate(DataSource dataSource, boolean lazyInit) { }

// Methods
public void setNativeJdbcExtractor(NativeJdbcExtractor extractor) { }
public NativeJdbcExtractor getNativeJdbcExtractor() { return null;}
public void setIgnoreWarnings(boolean ignoreWarnings) { }
public boolean isIgnoreWarnings() { return false;}
public void setFetchSize(int fetchSize) { }
public int getFetchSize() { return 0;}
public void setMaxRows(int maxRows) { }
public int getMaxRows() { return 0;}
public Object execute(ConnectionCallback action) throws DataAccessException { return null;}
protected Connection createConnectionProxy(Connection con) { return null;}
public Object execute(StatementCallback action) throws DataAccessException { return null;}
public void execute(String sql) throws DataAccessException { }
public Object query(String sql, ResultSetExtractor rse) throws DataAccessException { return null;}
public List query(String sql, RowCallbackHandler rch) throws DataAccessException { return null;}
public List query(String sql, RowMapper rowMapper) throws DataAccessException { return null;}
public Map queryForMap(String sql) throws DataAccessException { return null;}
public Object queryForObject(String sql, RowMapper rowMapper) throws DataAccessException { return null;}
public Object queryForObject(String sql, Class requiredType) throws DataAccessException { return null;}
public long queryForLong(String sql) throws DataAccessException { return 0L;}
public int queryForInt(String sql) throws DataAccessException { return 0;}
public List queryForList(String sql, Class elementType) throws DataAccessException { return null;}
public List queryForList(String sql) throws DataAccessException { return null;}
public SqlRowSet queryForRowSet(String sql) throws DataAccessException { return null;}
public int update(String sql) throws DataAccessException { return 0;}
public int[] batchUpdate(String[] sql) throws DataAccessException { return null;}
public Object execute(PreparedStatementCreator psc, PreparedStatementCallback action) throws DataAccessException { return null;}
public Object execute(String sql, PreparedStatementCallback action) throws DataAccessException { return null;}
public Object query(PreparedStatementCreator psc, PreparedStatementSetter pss, ResultSetExtractor rse) throws DataAccessException { return null;}
public Object query(PreparedStatementCreator psc, ResultSetExtractor rse) throws DataAccessException { return null;}
public Object query(String sql, PreparedStatementSetter pss, ResultSetExtractor rse) throws DataAccessException { return null;}
public Object query(String sql, Object[] args, int[] argTypes, ResultSetExtractor rse) throws DataAccessException { return null;}
public Object query(String sql, Object[] args, ResultSetExtractor rse) throws DataAccessException { return null;}
public List query(PreparedStatementCreator psc, RowCallbackHandler rch) throws DataAccessException { return null;}
public List query(String sql, PreparedStatementSetter pss, RowCallbackHandler rch) throws DataAccessException { return null;}
public List query(String sql, Object[] args, int[] argTypes, RowCallbackHandler rch) throws DataAccessException { return null;}
public List query(String sql, Object[] args, RowCallbackHandler rch) throws DataAccessException { return null;}
public List query(PreparedStatementCreator psc, RowMapper rowMapper) throws DataAccessException { return null;}
public List query(String sql, PreparedStatementSetter pss, RowMapper rowMapper) throws DataAccessException { return null;}
public List query(String sql, Object[] args, int[] argTypes, RowMapper rowMapper) throws DataAccessException { return null;}
public List query(String sql, Object[] args, RowMapper rowMapper) throws DataAccessException { return null;}
public Object queryForObject(String sql, Object[] args, int[] argTypes, RowMapper rowMapper) throws DataAccessException { return null;}
public Object queryForObject(String sql, Object[] args, RowMapper rowMapper) throws DataAccessException { return null;}
public Object queryForObject(String sql, Object[] args, int[] argTypes, Class requiredType) throws DataAccessException { return null;}
public Object queryForObject(String sql, Object[] args, Class requiredType) throws DataAccessException { return null;}
public Map queryForMap(String sql, Object[] args, int[] argTypes) throws DataAccessException { return null;}
public Map queryForMap(String sql, Object[] args) throws DataAccessException { return null;}
public long queryForLong(String sql, Object[] args, int[] argTypes) throws DataAccessException { return 0L;}
public long queryForLong(String sql, Object[] args) throws DataAccessException { return 0L;}
public int queryForInt(String sql, Object[] args, int[] argTypes) throws DataAccessException { return 0;}
public int queryForInt(String sql, Object[] args) throws DataAccessException { return 0;}
public List queryForList(String sql, Object[] args, int[] argTypes, Class elementType) throws DataAccessException { return null;}
public List queryForList(String sql, Object[] args, Class elementType) throws DataAccessException { return null;}
public List queryForList(String sql, Object[] args, int[] argTypes) throws DataAccessException { return null;}
public List queryForList(String sql, Object[] args) throws DataAccessException { return null;}
public SqlRowSet queryForRowSet(String sql, Object[] args, int[] argTypes) throws DataAccessException { return null;}
public SqlRowSet queryForRowSet(String sql, Object[] args) throws DataAccessException { return null;}
protected int update(PreparedStatementCreator psc, PreparedStatementSetter pss) throws DataAccessException { return 0;}
public int update(PreparedStatementCreator psc) throws DataAccessException { return 0;}
public int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) throws DataAccessException { return 0;}
public int update(String sql, PreparedStatementSetter pss) throws DataAccessException { return 0;}
public int update(String sql, Object[] args, int[] argTypes) throws DataAccessException { return 0;}
public int update(String sql, Object[] args) throws DataAccessException { return 0;}
public int[] batchUpdate(String sql, BatchPreparedStatementSetter pss) throws DataAccessException { return null;}
public Object execute(CallableStatementCreator csc, CallableStatementCallback action) throws DataAccessException { return null;}
public Object execute(String callString, CallableStatementCallback action) throws DataAccessException { return null;}
public Map call(CallableStatementCreator csc, List declaredParameters) throws DataAccessException { return null;}
protected Map extractReturnedResultSets(CallableStatement cs, List parameters, int updateCount) throws SQLException { return null;}
protected Map extractOutputParameters(CallableStatement cs, List parameters) throws SQLException { return null;}
protected Map processResultSet(ResultSet rs, ResultSetSupportingSqlParameter param) throws SQLException { return null;}
protected RowMapper getColumnMapRowMapper() { return null;}
protected RowMapper getSingleColumnRowMapper(Class requiredType) { return null;}
protected void applyStatementSettings(Statement stmt) throws SQLException { }
private void throwExceptionOnWarningIfNotIgnoringWarnings(SQLWarning warning) throws SQLWarningException { }
private static String getSql(Object sqlProvider) { return null;}

losedirection 2008-05-08
  • 打赏
  • 举报
回复
也没有异常
skyqiang 2008-05-08
  • 打赏
  • 举报
回复
你要把sql打印出来..最好在输出的时候像这样,容易找到.System.out.println(sql + "---------------------sql-------------------");
exception 有吗...
losedirection 2008-05-08
  • 打赏
  • 举报
回复
我把打印出的SQL执行过了,就是因为没有提交
老紫竹 2008-05-08
  • 打赏
  • 举报
回复
String sql = ...
System.out.println(sql);

把打印出来的sql 手工执行一下看看吧
skyqiang 2008-05-08
  • 打赏
  • 举报
回复
如果System.out.println(sql)打印不出来的话肯定有问题了........
你有没有部署上去....
你可以用debug看一下..你一步一步的看...
beiouwolf 2008-05-08
  • 打赏
  • 举报
回复
首先确定哪里的问题
在你觉得可疑的地方加句System.out.println()

常规的调试方法,还是要先学习一下的
losedirection 2008-05-08
  • 打赏
  • 举报
回复
就是根据打印出的update的SQL没有提交
losedirection 2008-05-08
  • 打赏
  • 举报
回复
没有异常报出
,真是郁闷的很

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧