Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Java.sql.SQLRecoverableException: Данные для считывания из сокета отсутствуют / 1 сообщений из 1, страница 1 из 1
15.11.2016, 15:25
    #39347639
Кайрат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java.sql.SQLRecoverableException: Данные для считывания из сокета отсутствуют
Доброго времени суток! Возникла одна ошибка, с которой не могу разобраться. При разработке модуля на Oracle ADF в среде разработки JDeveloper выходит ошибка при вызове оракловской функции. Лог ошибки:
<15.11.2016 14:10:29 ALMT> <Error> <Default> <INSIS-00000 (***INSIS ERROR MESSAGE***)> <[com.fadata.insis.view.message.InsisMessageService writeMessageToLogger] Данные для считывания из сокета отсутствуют
java.sql.SQLRecoverableException: Данные для считывания из сокета отсутствуют
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1204)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1153)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:312)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:204)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:540)
Truncated. see log file for complete stacktrace
>
<UIXRegion> <_warn> Ошибка при обработке viewId: /CntBlanksTF/CntBlanks URI: /gencnt/taskFlow/CntFormsTF/CntBlanks/CntBlanks.jsff actual-URI: /gencnt/taskFlow/CntFormsTF/CntBlanks/CntBlanks.jsff.
oracle.jbo.SQLStmtException: JBO-27122: SQL error during statement preparation. Statement: SELECT * FROM (SELECT
BEI.EMP_ID AS MAN_ID,
PP.NAME,
BEI.DEPARTMENT_ID,
BEI.RANK_ID
FROM BSO.BSO_EMPLOYEE_INFO BEI JOIN INSIS_CNT_V1.P_PEOPLE PP ON BEI.EMP_ID = PP.MAN_ID) QRSLT WHERE MAN_ID = :Bind_DonorEmpId
at oracle.jbo.server.BaseSQLBuilderImpl.processException(BaseSQLBuilderImpl.java:3721)
at oracle.jbo.server.OracleSQLBuilderImpl.processException(OracleSQLBuilderImpl.java:4722)
at oracle.jbo.server.QueryCollection.buildResultSet(QueryCollection.java:1386)
at oracle.jbo.server.QueryCollection.executeQuery(QueryCollection.java:928)
at oracle.jbo.server.ViewObjectImpl.executeQueryForCollection(ViewObjectImpl.java:6968)
at com.fadata.insis.adfextensions.InsisViewObjectImpl.executeQueryForCollection(InsisViewObjectImpl.java:178)
at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:1183)
at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:1037)
at oracle.jbo.server.ViewRowSetIteratorImpl.ensureRefreshed(ViewRowSetIteratorImpl.java:2774)
at oracle.jbo.server.ViewRowSetIteratorImpl.ensureRefreshed(ViewRowSetIteratorImpl.java:2751)
at oracle.jbo.server.ViewRowSetIteratorImpl.first(ViewRowSetIteratorImpl.java:1580)
at oracle.jbo.server.ViewRowSetImpl.first(ViewRowSetImpl.java:3500)
at oracle.jbo.server.AssociationDefImpl.get(AssociationDefImpl.java:452)
at oracle.jbo.server.ViewAttributeDefImpl.get(ViewAttributeDefImpl.java:945)
at oracle.jbo.server.ViewRowStorage.getViewLinkAccessorResult(ViewRowStorage.java:1514)
at oracle.jbo.server.ViewRowStorage.getAttributeInternal(ViewRowStorage.java:1793)
at oracle.jbo.server.ViewRowImpl.getAttributeValue(ViewRowImpl.java:1897)
at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:840)
at oracle.jbo.server.ViewRowImpl.getAttrInvokeAccessor(ViewRowImpl.java:922)
at oracle.jbo.server.ViewRowImpl.getAttribute(ViewRowImpl.java:870)
at oracle.jbo.ExprEval.getRowVal(ExprEval.java:1361)
at oracle.jbo.server.RowImpl.getExprVarVal(RowImpl.java:1953)
at oracle.jbo.server.ViewRowImpl.getExprVarVal(ViewRowImpl.java:2895)
at oracle.jbo.ExprEval$ExprValueSupplierOverrideMap.internalGet(ExprEval.java:164)
at oracle.jbo.common.JboAbstractMap.get(JboAbstractMap.java:54)
at oracle.jbo.ExprEval$ExprEvalGroovyWrapper.getProperty(ExprEval.java:315)
at oracle.jbo.ExprEval$ExprValueSupplierGroovyBinding.getVariable(ExprEval.java:610)
at groovy.lang.Script.getProperty(Script.java:54)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:241)
at bc4j.com_fadata_insis_model_dmc_gencnt_CntForms_CntBlanks_BsoOrderView_DonorEmpDesc_null.gs.run(bc4j.com_fadata_insis_model_dmc_gencnt_CntForms_CntBlanks_BsoOrderView_DonorEmpDesc_null.gs.groovy:1)

Ошибка возникла после добавления столбца в таблицу с которой работает данная функцию. При этом Commit работает нормально сохраняет введенные данные. А потом после сохранения вызывается функция Оракл и приложение зависает. Выходит окно с ошибкой "Данные для считывания из сокета отсутствуют". В Entity и View Objects добавил данный столбец.
Вызов функции из Java кода:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public void FixOrder(ActionEvent actionEvent) {                
        FacesContext fctx = FacesContext.getCurrentInstance();
 
        DCBindingContainer dcBindings;
        dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
        DCIteratorBinding orderIterator = (DCIteratorBinding)dcBindings.get("BsoOrderViewIterator");  
        
        String orderIdValue = orderIterator.getCurrentRow().getAttribute("OrderId").toString(); 
        
        String errorMessage = "";
        
        OperationBinding Commit = dcBindings.getOperationBinding("Commit");
        OperationBinding Rollback = dcBindings.getOperationBinding("Rollback");
        
        Commit.execute();
 
        Object[] params = new Object[] { orderIdValue, errorMessage};
        boolean b = DBUtils.callBooleanFunction("BSO.BSO_OPERATIONS.FIX_ORDER_NC(?,?)", params, dbtrans);
        String mess = (String)params[params.length - 1];
        
        Commit.execute();
        
        if (!b) {
            InsisMessageService.addInsisErrorMessage(orderIdValue + "; " + mess);
        } else {
            InsisMessageService.addInsisInfoMessage(orderIdValue + " Накладная создана успешно!!!");
                        
            sbc1.setValue("Y");
            partiallyRefreshUIComponent(sbc1);
            AdfFacesContext.getCurrentInstance().addPartialTarget(sbc1);
        }
    }



А вот и сама функция Оракл:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
FUNCTION Fix_Order(Pi_Order_Id NUMBER, Pio_Message IN OUT Error_Processing.Tab_Errors) RETURN BOOLEAN IS
        l_Order    Bso_Order%ROWTYPE;
        l_Emp_Info Bso_Employee_Info%ROWTYPE;
        l_Order_No VARCHAR2(100);
    BEGIN
        SAVEPOINT Sv_Before_Fix_Order;
        --
        l_Order := Get_Order(Pi_Order_Id => Pi_Order_Id);
        --
        IF l_Order.Order_Id IS NULL THEN
            l_Error_Text    := 'BSO.ORDER_DOES_NOT_EXISTS';
            l_Error_Details := 'ORDER_ID=' || Pi_Order_Id;
            l_Error_Id      := Error_Processing.Add_Error(Pi_Errors => Pio_Message, Pi_Prefix => 'BSO_OPERATION.fix_order',
                                                                                                        Pi_Error_Code => SQLCODE, Pi_Error_Description => l_Error_Text,
                                                                                                        Pi_Error_Details => l_Error_Details);
        
            ROLLBACK TO Sv_Before_Fix_Order;
            RETURN FALSE;
        END IF;
        --
        IF l_Order.Fixed = 'Y' THEN
            l_Error_Text    := 'BSO.ORDER_ALREADY_FIXED';
            l_Error_Details := 'ORDER_ID=' || Pi_Order_Id;
            l_Error_Id      := Error_Processing.Add_Error(Pi_Errors => Pio_Message, Pi_Prefix => 'BSO_OPERATION.fix_order',
                                                                                                        Pi_Error_Code => SQLCODE, Pi_Error_Description => l_Error_Text,
                                                                                                        Pi_Error_Details => l_Error_Details);
        
            ROLLBACK TO Sv_Before_Fix_Order;
            RETURN FALSE;
        END IF;
        --
        IF NOT Check_Order(l_Order, Pio_Message) THEN
            ROLLBACK TO Sv_Before_Fix_Order;
            RETURN FALSE;
        END IF;
        --
        FOR r IN (SELECT *
                                FROM Bso_Operation o
                             WHERE o.Order_Id = Pi_Order_Id
                                 AND o.Fixed != 'C') LOOP
            IF NOT Fix_Operation(Pi_Operation_Id => r.Operation_Id, Pi_Old_Operation_Id => NULL, Pio_Message => Pio_Message) THEN
                ROLLBACK TO Sv_Before_Fix_Order;
                RETURN FALSE;
            END IF;
        END LOOP;
        --
        UPDATE Bso_Order o SET o.Fixed = 'Y' WHERE o.Order_Id = Pi_Order_Id;
        UPDATE Bso_Order o SET o.Closed_Order_Id = Pi_Order_Id WHERE o.Order_Id = l_Order.Linked_Order_Id;
        --
        l_Emp_Info := Pkg_Info.Get_Emp_Info(Pi_Emp_Id => l_Order.Operation_Emp_Id);
        l_Order_No := Get_Order_No(Pi_Office_Id => l_Emp_Info.Department_Id, Pi_Year => TO_CHAR(l_Order.Order_Date, 'yyyy'));
        UPDATE Bso_Order o
             SET o.Order_No = l_Order_No
         WHERE o.Order_Id = Pi_Order_Id
             AND o.Order_No IS NULL;
        --
        RETURN TRUE;
        --
    EXCEPTION
        WHEN OTHERS THEN
            l_Error_Text    := SQLERRM;
            l_Error_Details := 'ORDER_ID=' || Pi_Order_Id;
            l_Error_Id      := Error_Processing.Add_Error(Pi_Errors => Pio_Message, Pi_Prefix => 'BSO_OPERATION.fix_order',
                                                                                                        Pi_Error_Code => SQLCODE, Pi_Error_Description => l_Error_Text,
                                                                                                        Pi_Error_Details => l_Error_Details);
            ROLLBACK TO Sv_Before_Fix_Order;
            RETURN FALSE;
    END;
    ---------------------------------------------------------------------------------------------------
    FUNCTION Fix_Order_Nc(Pi_Order_Id NUMBER, Pio_String_Message IN OUT VARCHAR2) RETURN BOOLEAN IS
        l_Result  BOOLEAN;
        p_Message Error_Processing.Tab_Errors;
    BEGIN
        l_Result := Fix_Order(Pi_Order_Id, p_Message);
        --
        Pio_String_Message := Error_Messages_2_String(p_Message);
        --
        RETURN l_Result;
    END;



Может кто-нибудь сталкивался с такой проблемой.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Java.sql.SQLRecoverableException: Данные для считывания из сокета отсутствуют / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]