ACTION
public void mobileNote(HttpServletRequest request, String from) {
MobileNoteAction mna = new MobileNoteAction();
String[] address = new String[] {};
String[] codes = new String[] {};
if (from.equals("sms")) {
codes = this.getParameters(request, "recCode");
} else {
codes = this.getParameters(request, "sendNums");
}
TeleService teleService = mna.setUp();
address = mna.getPhone(codes);// 被叫号码 }
MobileNoteAction
public String[] getPhone(String[] codes) {
Map map = new HashMap();
String num = "";
for (int i = 0; i < codes.length; i++) {
String code = codes[i];
Set users = this.getAllUsersWithIds(code);
for (Iterator itr = users.iterator(); itr.hasNext();) {
EmpUser user = (EmpUser) itr.next();
map = this.getHanton().getMobileNoteDAO()
.getPhone(user.getId());
// 这里是循环获得号码,然后以";"隔开构成数组,所以用+=
if (map.get("EMP_MOBILE") != null)
num += map.get("EMP_MOBILE").toString() + ";";
else
num += "";
}
}
String[] address = num.split(";");
return address;
}
如上代码所示,如果这样调用就会报错,但是要把getPhone放在ACITON中用this.getPhone来调用就不会有错,代码都没变,不知道是什么错误,错误代码如下,请各位帮忙!!WARN [org.apache.struts.action.RequestProcessor] - Unhandled Exception thrown: class org.springframework.transaction.CannotCreateTransactionException
ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[action]] - Servlet.service() for servlet action threw exception
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: I/O Error: Connection reset
java.sql.SQLException: I/O Error: Connection reset
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2277)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:599)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:331)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:178)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:291)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:277)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:259)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:241)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:182)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:282)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:225)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy0.ifTimeOut(Unknown Source)
at org.springframework.hanton.web.DefaultAction.execute(DefaultAction.java:58)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at java.io.DataInputStream.readFully(DataInputStream.java:152)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:826)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:707)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2172)
... 42 more
public void mobileNote(HttpServletRequest request, String from) {
MobileNoteAction mna = new MobileNoteAction();
String[] address = new String[] {};
String[] codes = new String[] {};
if (from.equals("sms")) {
codes = this.getParameters(request, "recCode");
} else {
codes = this.getParameters(request, "sendNums");
}
TeleService teleService = mna.setUp();
address = mna.getPhone(codes);// 被叫号码 }
MobileNoteAction
public String[] getPhone(String[] codes) {
Map map = new HashMap();
String num = "";
for (int i = 0; i < codes.length; i++) {
String code = codes[i];
Set users = this.getAllUsersWithIds(code);
for (Iterator itr = users.iterator(); itr.hasNext();) {
EmpUser user = (EmpUser) itr.next();
map = this.getHanton().getMobileNoteDAO()
.getPhone(user.getId());
// 这里是循环获得号码,然后以";"隔开构成数组,所以用+=
if (map.get("EMP_MOBILE") != null)
num += map.get("EMP_MOBILE").toString() + ";";
else
num += "";
}
}
String[] address = num.split(";");
return address;
}
如上代码所示,如果这样调用就会报错,但是要把getPhone放在ACITON中用this.getPhone来调用就不会有错,代码都没变,不知道是什么错误,错误代码如下,请各位帮忙!!WARN [org.apache.struts.action.RequestProcessor] - Unhandled Exception thrown: class org.springframework.transaction.CannotCreateTransactionException
ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[action]] - Servlet.service() for servlet action threw exception
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: I/O Error: Connection reset
java.sql.SQLException: I/O Error: Connection reset
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2277)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:599)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:331)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:178)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:291)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:277)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:259)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:241)
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:182)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:282)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:225)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy0.ifTimeOut(Unknown Source)
at org.springframework.hanton.web.DefaultAction.execute(DefaultAction.java:58)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at java.io.DataInputStream.readFully(DataInputStream.java:152)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:826)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:707)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2172)
... 42 more
你发的异常意思说你的JDBC连接有问题
你看看你数据库连接哪里有问题不.
class ACTION {
public void mobileNote(HttpServletRequest request, String from) {
MobileNoteAction mna = new MobileNoteAction();
String[] address = new String[] {};
String[] codes = new String[] {};
if (from.equals("sms")) {
codes = this.getParameters(request,"recCode");
} else {
codes = this.getParameters(request,"sendNums");
}
TeleService teleService = mna.setUp();
address = mna.getPhone(codes);// 被叫号码 }
}
class MobileNoteAction {
public String[] getPhone(String[] codes) {
Map map = new HashMap();
String num = "";
for (int i = 0; i < codes.length; i++) {
String code = codes[i];
Set users = this.getAllUsersWithIds(code);
for (Iterator itr = users.iterator(); itr.hasNext();) {
EmpUser user = (EmpUser) itr.next();
map = this.getHanton().getMobileNoteDAO()
.getPhone(user.getId());
// 这里是循环获得号码,然后以";"隔开构成数组,所以用+=
if (map.get("EMP_MOBILE") != null)
num += map.get("EMP_MOBILE").toString() + ";";
else
num += "";
}
}
String[] address = num.split(";");
return address;
}
}
按你说的意思应该是红色代码哪里会有错误,我调用了没有错误.
谢谢大家