• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 5994
2015.07.02 (14:58:23)

게시판을 이용해 주셔서 감사합니다.
다음양식에 맞게 입력해주세요.

**필수입력사항**

* 고객(업체)명 : 한국 서부발전
* 제품 버전 : gauce 4.0
* 문의 유형(질문/요청/참조) : clob 데이터 처리 및 저장  
* 내용 : 

clob 데이터 저장관련 해서 질문을 드릴려고 합니다.


소스 :

저장 버튼 클릭 시 호출 스크립트

function on_save() {

ta_content1.Enable = truel;

ta_content2.Enable = true2;

ta_content3.Enable = true3;

ta_content4.Enable = true4;

ta_content5.Enable = true5;

ds_01.NameValue(ds_01.RowPosition, "CONTENT1") = "ta_content1"


tr_01.ExtProp("UseActionBlank") = "T";

tr_01.Post();

}


tr 오브젝트 선언

<object id=tr_01 classid="">

<param name="ServerIP value="">

<param name="Action"  value="transaction.jsp">

<param name="KeyName" value="toinb_dataid4">

<param name="KeyValue" value="JSP(I::IN_DS1=ds_01)">

</object>


textarea 오브젝트 선언

<object classid="" id="ta_content1" width="100%" height="100>

<param name=CacheLoad value=true>

<param name=Enable value=true>

<param name=ApplyRTF value=true>

</object>


bind 오브젝트 선언

<object id="bd_01" classid="">

<param name=DataID value=ds_01>

<param nameBindInfo value='

<C>Col="CONTENT1" Ctrl="ta_content1" Param=Src</C>

'

</object>


이렇게 코딩을 하고 저장을 할려고 하니 CLOB 데이터가 1byte로 생성이 되면서 글 내용을 사라지는 현황이

발생을 합니다.


어디서 잘못 된건인지 알고 싶은데... CLOB 관련된 모든 소스를 확인해 봐도 정확한 원인을 알 수가 없네요..

혹시 다른 부분에 설정을 해야 하는 부분이 있는 것인지.. 궁금 합니다.


답변 기다리겠습니다.

2015.07.06 (08:52:21)
shift

1. 저장 전 데이터가 정상적으로 들어있는지 확인해 보시기 바랍니다.

alert(ds_01.text);

tr_01.Post();

 

2. OndataError를 사용하여 포멧에 이상이 있는지 확인해 보시기 바랍니다.

http://member.shift.co.kr/ComponentManual/AMX/Basic/DataSet/Event/OnDataError/OnDataError.htm

 

3. 또한 콜론(:)을 하나만 사용하시기 바랍니다.

 I::IN_DS1=ds_01 > I:IN_DS1=ds_01

 

감사합니다.

(*.234.186.58)
2015.07.06 (13:34:45)
황기석

답변 감사드립니다. 


alert(ds_01) 해본 결과 다음과 같이 나오더군요 


CONTENT1:URL:NORMALTYPE:NORMALKEY

"ta_content1" 


textarea 앞에 내용을 입력하고 저장 버튼을 누르면 내용이 없어지면서 


transaction.jsp에서 

CONTENT1_size로 사이즈를 체크해 보면 1byte로 나오네요.. 


WEB-INF\tmp에 생성되는 파일을 체크해 봐도 1byte로 파일만 생성이 되어 있구요.. 

저장을 하기 전에 다른 작업이나 설정을 해야 되는 부분이 있는지 궁금합니다.

(*.227.22.57)
2015.07.06 (17:42:34)
황기석

저장시 서버 로직 


req = service.getGauceRequest();

req = service.getGauceResponse();


GauceDataSet cds = req.getGauceDataSet("IN_DS1"); 


if(cds != null) {

int iContent1 = cds.indexOfColumn("CONTENT1");

int iContent1_size = cds.indexOfColumn("CONTENT1_size");

int iContent1_type = cds.indexOfColumn("CONTENT1_type");


GauceDataRow[] rows = cds/getDataRows();


for(int i=0; i<rows.length;i++) {

sql = "insert query"; 


is = (InputStream) rows[i].getInputStream(iContent1);

                StringBuffer sb = new StringBufffer();

                byte[] buf = new byte[1024]; 

while(true) {

int bread = is.read(buf); 

                        if(bread == -1) break; 

                        sb.append(new String(buf)); 

}


String content1_data = sb.toString();

                StringReader sr = new StringReader(content1_data); 


stmt = con.prepareStatement(sb.toString()); 


stmt.setCharacterStream(1, sr, content1_data.length());


stmt.executeUpdate();

is.close();

}

stmt.close();

}


이런식으로 서버 소스는 코딩 하였습니다... 다른 샘플 소스들과 비교해 보아도 다른 부분을 찾지 못해 이렇게 글을 올립니다. 


내용 확인해 주시고 

아래 번호로 연락 주시면 감사하겠습니다. 


02-3429-6824 : 황기석

(*.227.22.57)
2015.07.07 (08:28:17)
shift

소스상의 이상은 확인할 수 없습니다.

 

화면에서 전달시 HTTP Analyzer와 같은 패킷 확인할 수 있는 툴에서 데이터가 정상적으로 전달되는지 확인한 후

서비스에서 전달된 URL, Size, Type 등을 로그에 남겨 데이터를 확인해야 할 것 같습니다.

 

FAQ의 샘플이 먼저 정상적으로 동작하는지 확인해보시기 바라며, 해당 소스를 기준으로 적용해보시기 바랍니다.

blob sample : http://member.shift.co.kr/index.php?search_target=title&search_keyword=blob&document_srl=230156

clob sample : http://member.shift.co.kr/index.php?search_target=title&search_keyword=clob&document_srl=230314

 

문제가 해결되지 않으시면 유지보수 담당자에게 원격지원을 받으시기 바랍니다.

 

감사합니다.

(*.234.186.58)
2015.07.15 (13:02:21)
황기석

안녕하세요. 저번에 문의 드렸던 내용들은 어느정도 해결이 된거 같은데

다른 문제가 있어서 질문을 드립니다.


CLOB 저장 시 TMP 에 저장 된 내용을 가져와서 파싱을 하게 되는데.

파싱해서 저장 시 일정 용량 이상이 될 경우


Didn't meet stated Content-Length, wrote 메세지가 나오면서 저장이 안되 현상이 발생하더군요...


이 경우 해결 방법이 있는지 궁금 합니다.

(*.227.22.57)
2015.07.17 (16:55:09)
shift

"Didn't meet stated Content-Length, wrote" 화면에서 보여 주려는 것과 실제로 전송되는 콘텐츠 길이를 확인 시켜 주기 위해 웹로직에 추가된 기능입니다.

참고 : http://dae0park.blog.me/140175583885

 

servlet code에서 아래 code를 추가해 보시기를 권장합니다.

response.setContentLength(0);

............................

............................

response.flushBuffer();

return;

(*.234.186.71)
 
Tag List
XE Login