java.sql.SQLRecoverableException: Данные для считывания из сокета отсутствуют

 
 
 
Сообщения:10
Доброго времени суток! Возникла одна ошибка, с которой не могу разобраться. При разработке модуля на 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 кода:
    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);
        }
    }
А вот и сама функция Оракл:
	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;


Может кто-нибудь сталкивался с такой проблемой.
 
 
Сообщения:10
Проблема решена. Можно удалить данную тему)
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет