Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > TDSReader исключение


Автор: romawint 17.10.2013, 16:03
Помогите пожалуйста, не могу понять почему JDBC выдает такой exception:
Код

com.microsoft.sqlserver.jdbc.TDSParser throwUnexpectedTokenException
SEVERE: ConnectionID:1 ClientConnectionId: 44da76e8-f88d-4517-b577-6c6a2e0af3ce: FetchBufferTokenHandler: Encountered unexpected unknown token (0x2)
com.microsoft.sqlserver.jdbc.TDSReader throwInvalidTDSToken
SEVERE: ConnectionID:1 ClientConnectionId: 44da76e8-f88d-4517-b577-6c6a2e0af3ce got unexpected value in TDS response at offset:1129
com.microsoft.sqlserver.jdbc.SQLServerException: Недопустимый поток протокола потока табличных данных (TDS). Непредвиденный маркер (token) unknown token (0xFFFFFFFF).
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1654)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.throwInvalidTDSToken(SQLServerConnection.java:1643)
    at com.microsoft.sqlserver.jdbc.TDSReader.throwInvalidTDSToken(IOBuffer.java:4754)
    at com.microsoft.sqlserver.jdbc.TDSParser.throwUnexpectedTokenException(tdsparser.java:100)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:89)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:4849)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1781)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1034)
    at stek.servise.servlet.Employee.doPost(Employee.java:156)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at base.CharEncodingFilter.doFilter(CharEncodingFilter.java:34)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Автор: romawint 22.10.2013, 11:32
вот сам код:

Код

public class Employee extends HttpServlet {

    static final String DB_URL = "jdbc:sqlserver://test:1433;databaseName=test;characterEncoding=UTF-8";
    static final String USER = "";
    static final String PASS = "";
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        response.addHeader("Access-Control-Allow-Origin", "*");
        PrintWriter out = response.getWriter();
        try {

            String task = request.getParameter("task");
            task = (task == null ? "null" : task);
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();
            String sql;
            if (task.equals("COMMUNIC")) {
                String orgId = request.getParameter("org_id");           
                String lastName = request.getParameter("last_name");
                String jobName = request.getParameter("job_name");
                String telAts = request.getParameter("tel_ats").replaceAll("-", "");
                String value = new String();
                sql = "SELECT tab_no, fname+' '+sname+' '+tname as name, posada,isnull(tel1,'')as tel1,isnull(tel2,'')as tel2,isnull(email,'') as email,job,name as job_txt  FROM emploe left join tree on job = tree.id"
                        + " where job = '" + orgId + "' or fname LIKE '" + lastName + "%' or posada = '" + jobName + "' or replace(tel1,'-','') like '%" + telAts + "%' or replace(tel2,'-','') like '%" + telAts + "%'";
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                String name = rs.getString("name");
                String tel1 = rs.getString("tel1");
                String tel2 = rs.getString("tel2");
                String jobtxt = rs.getString("posada");
                String em = rs.getString("email");
                String email = "<a href='mailto:" + em + "'>" + em + "</a>";
                String tn = rs.getString("tab_no");
                String org = rs.getString("job_txt");
                String org_id = rs.getString("job");
                    value += "<tr class='row'><td>"+ name + "</td><td>" + tel1 + "</td><td>" + email + "</td><td>" + jobtxt + "</td></tr>";
                }
                out.println(value);

            } else if (task.equals("JOB_POS")) {
                response.setContentType("text/xml;charset=UTF-8");
                String value = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><main>";
                sql = "Select posada  FROM emploe  group by posada";
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    value += "<LONG_TEXT>" + rs.getString("posada") + "</LONG_TEXT>";
                }
                value += "</main>";
                out.println(value);
            } else if (task.equals("ORG_UNIT_LIST")) {
                sql = "SELECT id,name,pdrent_id FROM tree";
                rs = stmt.executeQuery(sql);
                String value = new String();
                ArrayList<Item> arr = new ArrayList<Item>();
                while (rs.next()) {
                    arr.add(new Item(rs.getString("id"), rs.getString("name"), rs.getString("pdrent_id")));
                }
                value += recurs(3, arr, "0");
                out.println(value);
            } else {
                out.println("Employee: uncorrect task = " + task);
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            out.close();
            try {
                if (rs != null) {
                    rs.close();
                }
            } catch (SQLException se2) {
                se2.printStackTrace();
            }
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException se2) {
                se2.printStackTrace();
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)