'Flex'에 해당되는 글 23건
- 2009/02/28 iamyhs Missing Content-Type crossdomain.xml error
- 2009/01/28 iamyhs Flight Framework
- 2008/08/06 iamyhs SAP Web Dynpro + Adobe Flex/Flash
- 2008/06/27 iamyhs SAP<->Java<->Flex 개발시 알아둘 사항들
- 2008/05/07 iamyhs 대규모 프로젝트에서의 개발 그리고 플렉스
- 2008/03/30 iamyhs Simple Flex Builder, Step-1
- 2008/01/02 iamyhs JCO를 이용한 SAP 연결 테스트 (2)
- 2007/12/21 iamyhs Remote Object endPoint
- 2007/12/21 iamyhs SAP 계층적구조 파싱할때 유의사항
- 2007/08/15 iamyhs Flex(Cairngorm)+Spring+iBATIS+Oracle+Resin 연동시 대표적인 에러 몇가지들 (4)
개발 환경
Flex +Wily (APM 솔루션)+WebLogic
Flex 에서 서블릿 호출(JSP), 서블릿은 Wily의 필요한 데이터를 끌어오는 구조.
오류: [strict] Content-Type이 누락되어 http://ip:포트넘버/crossdomain.xml의 정책 파일이 무시됩니다. 이 문제를 해결하려면 http://www.adobe.com/go/strict_policy_files_kr을 참조하십시오.
해결은 서블릿을 아래처럼 수정했다
<%@ page contentType="text/html; charset=euc-kr" %> 을 아래처럼 바꾼다.
<%@ page contentType="text/xml; charset=euc-kr" %>
해결책을 찾고나면 아주 간단한 거지만, 그 사이 많은 일들이 있었다, WebLogic 에서 해당 컨피그를 설정해주면 간단히 끝나리라 생각했는데, 위 방식으로 해결을 했다.
"그거 하나 호출하는데 무슨 보안문제냐" 라는 타 개발영역에서 개발자들의 불만섞인 말을 이해한다.
Flash Player 자체의 보안정책을 설명해도 그다지 신통찮은 표정이다.어쨋든 덕분에 하나 배웠다.
별개로 앞단 개발자가 일일이 서버관리자부터 해당 솔루션 개발자를 찾아다니면서 아쉬운 소리를 해야 하는게 번거롭고,그다지 즐거운 일은 아니다.그 덕에 몇몇 사람들에게 고맙다는 말만 건넸다.
Flight Framework: Another Flex Framework?
제목 그대로 또 다른 Flex Framework 인가 싶어서 포스팅된 글을 봤더니, 구미가 당긴다.
HMVC: Hierarchical-Model-View-Controller 라고 표현했던대(Flight organizes modules of behavior and data into MVC sub-systems called domains) 실전 코딩을 해보고 난 후에야 그 장단점을 말할 수 있을듯 싶다.
지금까지 써본 프레임웍은 Cairngorm,MATE,Pure MVC 정도인대,이 프레임웍은 약간 다를것 같다.
더불어 New & Improved Flex/Flash Data Binding 포스팅을 보면 새롭게 mx.binding.utils.BindingUtil 을 대체할수 있는 클래스를 만든것 같은데 이것으로 인해서 고질적인 Memory Leak 문제가 어느정도 해결될지도 기대 된다.
NetWeaver 7.0 에 Web DynPro 와 Flex/Flash 컴포넌트와 연동되는걸 보여준다.
대단히 인상적이다. 현재 프로젝트가 SAP 쪽 데이타를 FM을 이용해 보여주는 형태인대(View) 굳이 플렉스 View를 고집할 필요는 없다.
비디오를 보면 내부적으로 분명히, Flex 쪽으로 데이타 연동시키는 엔진이 있을것 같은데, 그 부분이 무척 궁금하다.
SAP 한 과정을 수료하구 마지막 시간에, 이 Web DynPro와 VC 과정은 없냐구 질문을 했었다.
간단하게 설명은 들었지만,아마도 이런건 독학해야 하지 싶다.
대단히 인상적이다. 현재 프로젝트가 SAP 쪽 데이타를 FM을 이용해 보여주는 형태인대(View) 굳이 플렉스 View를 고집할 필요는 없다.
비디오를 보면 내부적으로 분명히, Flex 쪽으로 데이타 연동시키는 엔진이 있을것 같은데, 그 부분이 무척 궁금하다.
SAP Web Dynpro + Adobe Flex/Flash = Enterprise UI 2.0
SAP 한 과정을 수료하구 마지막 시간에, 이 Web DynPro와 VC 과정은 없냐구 질문을 했었다.
간단하게 설명은 들었지만,아마도 이런건 독학해야 하지 싶다.
주의사항)
SAP 용어를 그대로 쓴다, 이런 용어마저 익숙하지 않다면 SAP 에대한 기본서를 먼저 본다.
더불어 FM(Function Module)을 디버깅할때쓰이는 SAPGui 에 관련된 내용도 SAP 용어를 그대로 쓴다.
1)JCO vs JCA
현재 참여하고 잇는 프로젝트는 위 두 환경이 공존하고 있다.
1-1)로컬 테스트는 JCO
1-2)실제 Deploy는 JCA 환경
이유 : JCO 로 했을때, SSO(Single Sign On) 정보를 SAP의 ECC 정보가져올때(Landscape) 유지할수가 없었다.(정말 안되는지는 미 검증)
JCA로 했을때는 SSO 문제가 해결되어있고, JCA 자체가 표준 아키텍처 이므로 이 방식으로 개발하고 있다.
2)WebService vs FDS
SAP 쪽 데이타를 WebService 이용해서 가져오는 방식, SAP<->Flex
SAP 쪽 데이타를 Remote Object를 이용해서 가져오는 방식, SAP<->JAVA<->Flex
3)XML용 파서, FDS용 파서
3-1)WebService를 이용할때 : XML(텍스트) 대량의 데이타를 주고 받는 환경에서는 부적합(속도,용량)
3-2)FDS를 이용할때 : AMF(Binary) 대량의 데이타를 주고 받을때 적합
3-3)XML
DataType : XML
3-4)FDS
DataType : AMF(Binary)
SAP FM(RRW3_GET_QUERY_VIEW_DATA)을 이용
4)SAP GUI 디버깅
이 게시물을 참고
5)SAP 데이타구조에 대한 Online Help
Default Variables for Web Applications
Datasets
6)SAPGui 사용법을 알아야 한다, 가장 기본적인 서버세팅부터, TCode 같은것들 등등
7)기본적인 Bex Query Designer 사용법을 익혀야 한다.
8)파서를 직접 제작 혹은, 업그레이드 하고 싶다면 FM 자체를 디버깅하는 방법과, SAP 데이타의 구조를 파악해야한다
9)위험요소
현재 쓰이고 있는 RRW3_GET_QUERY_VIEW_DATA이 표준 FM이 아니다.SAP 쪽에서 Max Attention 방식의 별도 관리가 필요한 부분이기도 하다.
SAP 용어를 그대로 쓴다, 이런 용어마저 익숙하지 않다면 SAP 에대한 기본서를 먼저 본다.
더불어 FM(Function Module)을 디버깅할때쓰이는 SAPGui 에 관련된 내용도 SAP 용어를 그대로 쓴다.
1)JCO vs JCA
현재 참여하고 잇는 프로젝트는 위 두 환경이 공존하고 있다.
1-1)로컬 테스트는 JCO
1-2)실제 Deploy는 JCA 환경
이유 : JCO 로 했을때, SSO(Single Sign On) 정보를 SAP의 ECC 정보가져올때(Landscape) 유지할수가 없었다.(정말 안되는지는 미 검증)
JCA로 했을때는 SSO 문제가 해결되어있고, JCA 자체가 표준 아키텍처 이므로 이 방식으로 개발하고 있다.
2)WebService vs FDS
SAP 쪽 데이타를 WebService 이용해서 가져오는 방식, SAP<->Flex
SAP 쪽 데이타를 Remote Object를 이용해서 가져오는 방식, SAP<->JAVA<->Flex
3)XML용 파서, FDS용 파서
3-1)WebService를 이용할때 : XML(텍스트) 대량의 데이타를 주고 받는 환경에서는 부적합(속도,용량)
3-2)FDS를 이용할때 : AMF(Binary) 대량의 데이타를 주고 받을때 적합
3-3)XML
DataType : XML
3-4)FDS
DataType : AMF(Binary)
SAP FM(RRW3_GET_QUERY_VIEW_DATA)을 이용
4)SAP GUI 디버깅
이 게시물을 참고
5)SAP 데이타구조에 대한 Online Help
Default Variables for Web Applications
Datasets
6)SAPGui 사용법을 알아야 한다, 가장 기본적인 서버세팅부터, TCode 같은것들 등등
7)기본적인 Bex Query Designer 사용법을 익혀야 한다.
8)파서를 직접 제작 혹은, 업그레이드 하고 싶다면 FM 자체를 디버깅하는 방법과, SAP 데이타의 구조를 파악해야한다
9)위험요소
현재 쓰이고 있는 RRW3_GET_QUERY_VIEW_DATA이 표준 FM이 아니다.SAP 쪽에서 Max Attention 방식의 별도 관리가 필요한 부분이기도 하다.
현재 진행형인 프로젝트의 총 개발리더의 입장에서,뷰단을 바라본다면 과연 이 프로젝트가 성공적으로 가는 프로세스인가,아니면 그 반대인가.
거의 900명에 육박하는 이정도 규모의 프로젝트는 앞으로도 접하기 힘든 프로젝트 일것 같다.
이런 대규모의 프로젝트의 전형적인 문제들인 커뮤케이션,의사결정,정치역학,인력관리등등의 논외로 하고, 내가 속한 뷰단에 초점을 맞춰보고 싶다.
프로젝트 초반에(현재는 중반에 접어들고 있는 시점이라 본다) 총 책임자의 골짱,몸짱,얼짱 이란 표현이 무척 와닿는다.
내 관점으로 재 해석하면 골짱의 역할은 모델링이고, 몸짱의 역할은 프로세스이고, 얼짱의 역할은 플렉스이다.
과연, 골짱과 몸짱과는 별개로 얼짱이 될수 있을까?
과연, 골짱,몸짱,얼짱이 효과적으로 분할 및 통합의 프로세스가 이뤄질수 없나?
과연, 얼짱을 위한 골짱(데이타 모델링)이 필요할까?
과연, 얼짱다운 화면이란건 뭔가?
솔직히 순서대로,
없다.
아주 순진한 원론적인 이야기 이다.이중적이게도,현실에선 이렇게 할수 있는 방법을 찾아내야 한다.
있어야 한다.
현실적으로,이건 기술의 문제라기 보다는 조직의 구조적인(커뮤니케이션,정치역학등) 인자에 더 영향을 받는것 같다.
이 정도 대규모라면? 복잡다단하다.
없다.
용어도 생소한 UI 컨설턴트중에는 뷰단을 위해 모델단의 변경을 말하는 이들이 있다, 꼬리가 머리를 흔드는 꼴이다.
시행 착오중이다.
한도 끝도 없는 주제이다.
이 부분은 선택한 기술과는 무관한 부분이 더 많다고 생각한다.플렉스 다운 화면이란 말에서, 플렉스를 다른 신기술 용어로 대체해보라.
다시 내가 총 결정권자이라면
과연 뷰단의 솔루션으로 선택한 플렉스가 올바른 선택인가?
개발편이성,유지보수성,비용면 등등에서 상대적 우위를 차지하고 있나? UI 가 이쁜건 알고 있으니 고만해라.
지금까지 내린 부분적 결론은 성급한 선택이었다.
현 시점에서 얼짱 역할을 맡은 뷰단은 기묘하게 성형수술을 시도한 추녀같다.수술비용도 만만치 않지만,아마 나중에는 코가 주저앉을지도 모른다.
아침에 Ryan Stewart 포스팅에 링크된 Flex Interface Guidelines 을 보다 문득 들었던 생각을 적어본다.
그리고, 다시 DATA MODELING FUNDAMENTALS A Practical Guide for IT Professionals - Paulraj Ponniah pdf를 보고 있다.
ps
한달전쯤에 WallMart 의 GXXX 시스템의 구축의 프로젝트를 설명하면서 자사의 솔루션을 소개하러 HP 차장님 세분이 강좌를 한적이 있었다.
'EIS 같은 기보적인(?) 수준에서, IDM,EDW,DPP ' 도표를 보여주면서, 상당히 깊이있게 번갈아 가면서 진행을 했었다.
커뮤니케이션 문제를 어떻게 풀었냐는 질문에,총 리더와, 부 리더, 그리고 그 밑의 7개파트(?) 정도의 중간 리더가 프로젝트 전반에 걸쳐서 지속적으로 협력햇었다 라는
아주~ 일반적인 답변을 들었다.
대규모 프로젝트의 접근방식은 말 그대로 특화된 방법론이 필요한것 같다.수준이,차원이 틀리다.
거의 900명에 육박하는 이정도 규모의 프로젝트는 앞으로도 접하기 힘든 프로젝트 일것 같다.
이런 대규모의 프로젝트의 전형적인 문제들인 커뮤케이션,의사결정,정치역학,인력관리등등의 논외로 하고, 내가 속한 뷰단에 초점을 맞춰보고 싶다.
프로젝트 초반에(현재는 중반에 접어들고 있는 시점이라 본다) 총 책임자의 골짱,몸짱,얼짱 이란 표현이 무척 와닿는다.
내 관점으로 재 해석하면 골짱의 역할은 모델링이고, 몸짱의 역할은 프로세스이고, 얼짱의 역할은 플렉스이다.
과연, 골짱과 몸짱과는 별개로 얼짱이 될수 있을까?
과연, 골짱,몸짱,얼짱이 효과적으로 분할 및 통합의 프로세스가 이뤄질수 없나?
과연, 얼짱을 위한 골짱(데이타 모델링)이 필요할까?
과연, 얼짱다운 화면이란건 뭔가?
솔직히 순서대로,
없다.
아주 순진한 원론적인 이야기 이다.이중적이게도,현실에선 이렇게 할수 있는 방법을 찾아내야 한다.
있어야 한다.
현실적으로,이건 기술의 문제라기 보다는 조직의 구조적인(커뮤니케이션,정치역학등) 인자에 더 영향을 받는것 같다.
이 정도 대규모라면? 복잡다단하다.
없다.
용어도 생소한 UI 컨설턴트중에는 뷰단을 위해 모델단의 변경을 말하는 이들이 있다, 꼬리가 머리를 흔드는 꼴이다.
시행 착오중이다.
한도 끝도 없는 주제이다.
이 부분은 선택한 기술과는 무관한 부분이 더 많다고 생각한다.플렉스 다운 화면이란 말에서, 플렉스를 다른 신기술 용어로 대체해보라.
다시 내가 총 결정권자이라면
과연 뷰단의 솔루션으로 선택한 플렉스가 올바른 선택인가?
개발편이성,유지보수성,비용면 등등에서 상대적 우위를 차지하고 있나? UI 가 이쁜건 알고 있으니 고만해라.
지금까지 내린 부분적 결론은 성급한 선택이었다.
현 시점에서 얼짱 역할을 맡은 뷰단은 기묘하게 성형수술을 시도한 추녀같다.수술비용도 만만치 않지만,아마 나중에는 코가 주저앉을지도 모른다.
아침에 Ryan Stewart 포스팅에 링크된 Flex Interface Guidelines 을 보다 문득 들었던 생각을 적어본다.
그리고, 다시 DATA MODELING FUNDAMENTALS A Practical Guide for IT Professionals - Paulraj Ponniah pdf를 보고 있다.
ps
한달전쯤에 WallMart 의 GXXX 시스템의 구축의 프로젝트를 설명하면서 자사의 솔루션을 소개하러 HP 차장님 세분이 강좌를 한적이 있었다.
'EIS 같은 기보적인(?) 수준에서, IDM,EDW,DPP ' 도표를 보여주면서, 상당히 깊이있게 번갈아 가면서 진행을 했었다.
커뮤니케이션 문제를 어떻게 풀었냐는 질문에,총 리더와, 부 리더, 그리고 그 밑의 7개파트(?) 정도의 중간 리더가 프로젝트 전반에 걸쳐서 지속적으로 협력햇었다 라는
아주~ 일반적인 답변을 들었다.
대규모 프로젝트의 접근방식은 말 그대로 특화된 방법론이 필요한것 같다.수준이,차원이 틀리다.
개발 환경 : SAP+Flex+Java+Flex 2.0.1 hotfix3
현재 진행중인 프로젝트가 위와 같은 환경인대, 이 빌더에 쓰일 적당한 예제를 만들기가 얘매 하다.
일단, SFB(Simple Flex Builder)가 실제로 동작하는 방식을 캡쳐해서 링크한다.
프로젝트 성격상 동영상 캡쳐의 데이타는 흐림 처리를 했다.
화면 하단의 아래 메뉴들은 순서대로
1)전체 레이아웃 폼 선택
2)서치 컴포넌트 선택
3)일반 컴포넌트 선택
4)css 파일 선택
5)Generate 버튼 클릭,mxml 파일 생성
사용예)
전체 레이아웃 폼 선택 후,
컴포넌트를 위치하고 싶은 영역 선택 후, 원하는 컴포넌트 선택하게 되면, 해당 컴포넌트를 표시, Generate 버튼을 클릭하면 mxml 파일이 생성된다.
ps
이 글을 쓴지가 한달이 넘어간다.프로젝트가 바쁘다는 핑계로 어느새 시간이 이렇게 지나버렸다.
4월달엔 아주 간단한 예제로 대체해서 마무리 지을 예정이다.
동영상 파일에 업체의 내부 정보가 들어가서 동영상 링크는 제외한다.이것 역시 화면 캡쳐로 대신할련다.
현재 진행중인 프로젝트가 위와 같은 환경인대, 이 빌더에 쓰일 적당한 예제를 만들기가 얘매 하다.
일단, SFB(Simple Flex Builder)가 실제로 동작하는 방식을 캡쳐해서 링크한다.
프로젝트 성격상 동영상 캡쳐의 데이타는 흐림 처리를 했다.
화면 하단의 아래 메뉴들은 순서대로
1)전체 레이아웃 폼 선택
2)서치 컴포넌트 선택
3)일반 컴포넌트 선택
4)css 파일 선택
5)Generate 버튼 클릭,mxml 파일 생성
사용예)
전체 레이아웃 폼 선택 후,
컴포넌트를 위치하고 싶은 영역 선택 후, 원하는 컴포넌트 선택하게 되면, 해당 컴포넌트를 표시, Generate 버튼을 클릭하면 mxml 파일이 생성된다.
ps
이 글을 쓴지가 한달이 넘어간다.프로젝트가 바쁘다는 핑계로 어느새 시간이 이렇게 지나버렸다.
4월달엔 아주 간단한 예제로 대체해서 마무리 지을 예정이다.
동영상 파일에 업체의 내부 정보가 들어가서 동영상 링크는 제외한다.이것 역시 화면 캡쳐로 대신할련다.
개발환경은 Flex,Java,SAP 이다
JCO를 이용해서 SAP 쪽 연결은 아래 여섯 단계를 거친다.
Step 1: Initialize the RFC Connection
Step 2: Create a JCo Repository
Step 3: Retrieve a Specific Function from the Repository
Step 4: Populate the Metadata Structures
Step 5: Execute the Call to SAP
Step 6: Read the SAP Return Structure
package com.sec.global.mysap;
import com.sap.mw.jco.*;
public class SAPJCOTest {
public static void main(String[] args) {
final String SAP_CLIENT ="100";
final String USER_ID ="username";
final String PASSWORD = "password";
final String LANGUAGE = "en";
final String IP_ADDRESS = " xxx.xxx.xxx.xxx";
final String SYSTEM_NUMBER = "00";
JCO.Client aConnection;
IRepository aRepository;
System.out.println("JCO를 이용한 SAP 연결 테스트");
try {
aConnection = JCO.createClient(SAP_CLIENT,
USER_ID,
PASSWORD,
LANGUAGE,
IP_ADDRESS,
SYSTEM_NUMBER);
aConnection.connect();
aRepository = new JCO.Repository("SAP", aConnection);
IFunctionTemplate functionTemplate = aRepository.getFunctionTemplate("RRW3_GET_QUERY_VIEW_DATA");
JCO.Function function = functionTemplate.getFunction();
//I_INFOPROVIDER,I_QUERY,I_VIEW_ID,I_T_PARAMETER
function.getImportParameterList().setValue("xxxxx", "I_INFOPROVIDER");
function.getImportParameterList().setValue("xxxxx_Qxxxx", "I_QUERY");
function.getImportParameterList().setValue("", "I_VIEW_ID");
function.getImportParameterList().setValue("", "I_T_PARAMETER");
aConnection.execute(function);
System.out.println("연결 성공");
}
catch (Exception ex) {
System.out.println("연결 실패");
}
}
}
I_INFOPROVIDER,I_QUERY,I_VIEW_ID,I_T_PARAMETER 에 대한 세부 사항은 SAP 개발자가 명세서를 보내준다.
프로바이더 테크 네임, 쿼리 테크 네임 이런식으로 표현하고,Vairiable에 대한 세부사항은, I_T_PARAMETER(일종의 테이블 형태) 변수의 내용이다.
소스에서 I_VIEW_ID와 I_T_PARAMETER 값은 빈값인대,
이 값들은 쿼리테크 별로 다르다 I_T_PARAMETER 값은 보통 테이블 형태로 주어지고, I_VIEW_ID 는 공백인 경우가 많다.
이 예제는 연결 테스트 만이다. 실제로 Step 6 처럼 결과값을 가지고 가공을 해야한다.
이 과정에서 해당 리턴값을 어디에서 파싱할지가 아키텍처상 중요하다.
현재는,View(Flex) 단에서 파싱(다차원 구조이므로)하는 파서를 제작했지만, View단에서 파싱하는 것보다 Java 단에서 파싱하는 구조가 더 적절해 보인다.
JCO를 이용해서 SAP 쪽 연결은 아래 여섯 단계를 거친다.
Step 1: Initialize the RFC Connection
Step 2: Create a JCo Repository
Step 3: Retrieve a Specific Function from the Repository
Step 4: Populate the Metadata Structures
Step 5: Execute the Call to SAP
Step 6: Read the SAP Return Structure
package com.sec.global.mysap;
import com.sap.mw.jco.*;
public class SAPJCOTest {
public static void main(String[] args) {
final String SAP_CLIENT ="100";
final String USER_ID ="username";
final String PASSWORD = "password";
final String LANGUAGE = "en";
final String IP_ADDRESS = " xxx.xxx.xxx.xxx";
final String SYSTEM_NUMBER = "00";
JCO.Client aConnection;
IRepository aRepository;
System.out.println("JCO를 이용한 SAP 연결 테스트");
try {
aConnection = JCO.createClient(SAP_CLIENT,
USER_ID,
PASSWORD,
LANGUAGE,
IP_ADDRESS,
SYSTEM_NUMBER);
aConnection.connect();
aRepository = new JCO.Repository("SAP", aConnection);
IFunctionTemplate functionTemplate = aRepository.getFunctionTemplate("RRW3_GET_QUERY_VIEW_DATA");
JCO.Function function = functionTemplate.getFunction();
//I_INFOPROVIDER,I_QUERY,I_VIEW_ID,I_T_PARAMETER
function.getImportParameterList().setValue("xxxxx", "I_INFOPROVIDER");
function.getImportParameterList().setValue("xxxxx_Qxxxx", "I_QUERY");
function.getImportParameterList().setValue("", "I_VIEW_ID");
function.getImportParameterList().setValue("", "I_T_PARAMETER");
aConnection.execute(function);
System.out.println("연결 성공");
}
catch (Exception ex) {
System.out.println("연결 실패");
}
}
}
I_INFOPROVIDER,I_QUERY,I_VIEW_ID,I_T_PARAMETER 에 대한 세부 사항은 SAP 개발자가 명세서를 보내준다.
프로바이더 테크 네임, 쿼리 테크 네임 이런식으로 표현하고,Vairiable에 대한 세부사항은, I_T_PARAMETER(일종의 테이블 형태) 변수의 내용이다.
소스에서 I_VIEW_ID와 I_T_PARAMETER 값은 빈값인대,
이 값들은 쿼리테크 별로 다르다 I_T_PARAMETER 값은 보통 테이블 형태로 주어지고, I_VIEW_ID 는 공백인 경우가 많다.
이 예제는 연결 테스트 만이다. 실제로 Step 6 처럼 결과값을 가지고 가공을 해야한다.
이 과정에서 해당 리턴값을 어디에서 파싱할지가 아키텍처상 중요하다.
현재는,View(Flex) 단에서 파싱(다차원 구조이므로)하는 파서를 제작했지만, View단에서 파싱하는 것보다 Java 단에서 파싱하는 구조가 더 적절해 보인다.
SAP RFC 함수 호출시 화면 하나당 두개 이상의 RFC 콜을 하는게 많다.
문제는 Remote Object 특성상 동시에 호출해버리면 개별적으로 호출할때마다 몇배나 더시간이 많이 걸린다.
원인을 몰라서 헤맸었는데, 아래 사이트를 통해서 문제를 파악하게 되었다.
실제 코드는 아래와 같다.핵심은 두줄이다.
public class ClassName extends RemoteObject implements InterfaceName
import mx.rpc.remoting.mxml.RemoteObject;
..
this.endpoint = "/flex/messagebroker/amf?a="+randRange(1,10000);
...
}
주의할건 import mx.rpc.remoting.mxml.RemoteObject; 임포트 한다는것과, web 루트는 각 프로젝트마다 다를것이다. "/flex/"
뒤쪽 랜덤 함수는 임이의 정수형을 리턴하는 함수다.
동료 개발자들의 도움이 컸다.
실명을 언급하기가 뭐해서 이모,배모,홍모 세분께 감사한다. ^^
써놓니깐 웃기네. ㅋㅋㅋ
문제는 Remote Object 특성상 동시에 호출해버리면 개별적으로 호출할때마다 몇배나 더시간이 많이 걸린다.
원인을 몰라서 헤맸었는데, 아래 사이트를 통해서 문제를 파악하게 되었다.
Operating in Parallel with RemoteObject
실제 코드는 아래와 같다.핵심은 두줄이다.
public class ClassName extends RemoteObject implements InterfaceName
import mx.rpc.remoting.mxml.RemoteObject;
..
this.endpoint = "/flex/messagebroker/amf?a="+randRange(1,10000);
...
}
주의할건 import mx.rpc.remoting.mxml.RemoteObject; 임포트 한다는것과, web 루트는 각 프로젝트마다 다를것이다. "/flex/"
뒤쪽 랜덤 함수는 임이의 정수형을 리턴하는 함수다.
동료 개발자들의 도움이 컸다.
실명을 언급하기가 뭐해서 이모,배모,홍모 세분께 감사한다. ^^
써놓니깐 웃기네. ㅋㅋㅋ
JCO나 JCA 로 SAP 원천 데이타를 가져오고,
해당 데이타 파싱을 할때 계층적 구조(트리)를 표시하려 할때는 axis_data의 TLEVEL 변수를 참고 한다.
문제는 SAP 쪽에서는 흔히 말하는 계층적 형태의 구조가 Hierarchy와 Structure 타입이 있다.
Hierarchy 타입은 저 변수로 구분할수 있지만, Structure 타입은 뭘 참고해야하는지 알수가 없다.현재까지는 말이다.
결정적으로 SAP 쪽 개발자들이 이 사실을 모른다 라는 것이다.
덕분에 FDS용 파서 만들때 https://www.sdn.sap.com/irj/sdn/logon 사이트를 들락 날락 했었다.
해당 데이타 파싱을 할때 계층적 구조(트리)를 표시하려 할때는 axis_data의 TLEVEL 변수를 참고 한다.
문제는 SAP 쪽에서는 흔히 말하는 계층적 형태의 구조가 Hierarchy와 Structure 타입이 있다.
Hierarchy 타입은 저 변수로 구분할수 있지만, Structure 타입은 뭘 참고해야하는지 알수가 없다.현재까지는 말이다.
결정적으로 SAP 쪽 개발자들이 이 사실을 모른다 라는 것이다.
덕분에 FDS용 파서 만들때 https://www.sdn.sap.com/irj/sdn/logon 사이트를 들락 날락 했었다.
1)테스트 환경
Resin Pro 3.0.23
Flex 3.0b,Cairngorm 2.2
Spring 2.0.6
iBATIS 2.3.0.677
Oracle 9i
Error 내용 :
[RPC Fault faultString="Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource" faultCode="Server.Processing" faultDetail="null"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at ::NetConnectionMessageResponder/NetConnectionChannel.as$40:NetConnectionMessageResponder::statusHandler()
at mx.messaging::MessageResponder/status()
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Error 해결 : commons-dbcp-1.2.2.jar 파일을 WEB-INF/lib 에 카피해서 해결
Error 내용 :
Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
[RPC Fault faultString="Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool" faultCode="Server.Processing" faultDetail="null"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at ::NetConnectionMessageResponder/NetConnectionChannel.as$40:NetConnectionMessageResponder::statusHandler()
at mx.messaging::MessageResponder/status()
Error 해결 : commons-pool-1.3.jar 파일을 WEB-INF/lib 에 카피해서 해결
Error 내용 :
Error creating bean with name 'categoryService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'categoryDao' of bean class [com.appfoundation.flexibatis.services.CategoryServiceImpl]: Bean property 'categoryDao' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
Error 해결 : 주의할 것!! CategoryServiceImpl *Service 인터페이스를 구현한 클래스 에는 반드시 Spring applicationContext.xml 에서 DAO Config 부분의 bean id와 같은 getter,setter가 있어야한다. 익숙하기 전까지는 자주 실수하는 부분이다.
Error 내용 :
org.springframework.jdbc.CannotGetJdbcConnectionException : Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied
)
Error 해결 : application.properties 안의 아이디 비번이 틀린경우이다.
Error 내용 :
com.ibatis.sqlmap.client.SqlMapException : There is no statement named Category.getCategoryList in this SqlMap.
Error 해결 : SqlMapConfig.xml 파일에서 해당 sqlmap 파일을 명시하지 않았다
(아니면 이미 있는데,테스트시 코멘트 처리한걸 풀어주지 않고 테스트하는 경우가 있다.)
Error 내용 :
//com.ibatis.sqlmap.client.SqlMapException: There is already a statement named getContacts in this SqlMap.
가령 ContactDaoImpl 클래스를 코딩할때 아래처럼 Contact.getContacts 처럼 해줘야한다,다른 map 파일에서 똑같은 이름의 메소드가 있다면,아래 에러가 난다.
이 에러때문에 한참 헤맸었다.아래 포스팅에도 언급해놨지만, 이 부분때문에 반나절을 헤맨 기억이 나서 다시 중복으로 언급해둔다.
위와 관련해서 sqlmapconfig.xml 에 아래의 태그를 추가해준다.
<settings useStatementNamespaces="true"/>
public List getContacts() throws DataAccessException {
//return getSqlMapClientTemplate().queryForList("getContacts"); //이게 아니라 아래처럼이다.
return getSqlMapClientTemplate().queryForList("Contact.getContacts");
}
Resin Pro 3.0.23
Flex 3.0b,Cairngorm 2.2
Spring 2.0.6
iBATIS 2.3.0.677
Oracle 9i
Error 내용 :
[RPC Fault faultString="Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource" faultCode="Server.Processing" faultDetail="null"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at ::NetConnectionMessageResponder/NetConnectionChannel.as$40:NetConnectionMessageResponder::statusHandler()
at mx.messaging::MessageResponder/status()
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
Error 해결 : commons-dbcp-1.2.2.jar 파일을 WEB-INF/lib 에 카피해서 해결
Error 내용 :
Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
[RPC Fault faultString="Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool" faultCode="Server.Processing" faultDetail="null"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at ::NetConnectionMessageResponder/NetConnectionChannel.as$40:NetConnectionMessageResponder::statusHandler()
at mx.messaging::MessageResponder/status()
Error 해결 : commons-pool-1.3.jar 파일을 WEB-INF/lib 에 카피해서 해결
Error 내용 :
Error creating bean with name 'categoryService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'categoryDao' of bean class [com.appfoundation.flexibatis.services.CategoryServiceImpl]: Bean property 'categoryDao' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
Error 해결 : 주의할 것!! CategoryServiceImpl *Service 인터페이스를 구현한 클래스 에는 반드시 Spring applicationContext.xml 에서 DAO Config 부분의 bean id와 같은 getter,setter가 있어야한다. 익숙하기 전까지는 자주 실수하는 부분이다.
Error 내용 :
org.springframework.jdbc.CannotGetJdbcConnectionException : Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied
)
Error 해결 : application.properties 안의 아이디 비번이 틀린경우이다.
Error 내용 :
com.ibatis.sqlmap.client.SqlMapException : There is no statement named Category.getCategoryList in this SqlMap.
Error 해결 : SqlMapConfig.xml 파일에서 해당 sqlmap 파일을 명시하지 않았다
(아니면 이미 있는데,테스트시 코멘트 처리한걸 풀어주지 않고 테스트하는 경우가 있다.)
Error 내용 :
//com.ibatis.sqlmap.client.SqlMapException: There is already a statement named getContacts in this SqlMap.
가령 ContactDaoImpl 클래스를 코딩할때 아래처럼 Contact.getContacts 처럼 해줘야한다,다른 map 파일에서 똑같은 이름의 메소드가 있다면,아래 에러가 난다.
이 에러때문에 한참 헤맸었다.아래 포스팅에도 언급해놨지만, 이 부분때문에 반나절을 헤맨 기억이 나서 다시 중복으로 언급해둔다.
위와 관련해서 sqlmapconfig.xml 에 아래의 태그를 추가해준다.
<settings useStatementNamespaces="true"/>
public List getContacts() throws DataAccessException {
//return getSqlMapClientTemplate().queryForList("getContacts"); //이게 아니라 아래처럼이다.
return getSqlMapClientTemplate().queryForList("Contact.getContacts");
}
TAG Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name,
com.ibatis.sqlmap.client.SqlMapException : There is no statement named .. in this SqlMap.,
Error creating bean with name '' defined in ServletContext resource,
Error creating bean with name 'dataSource' defined in ServletContext resource,
Flex,
iBATIS,
Oracle,
org.springframework.jdbc.CannotGetJdbcConnectionException,
Resin,
Spring

댓글을 달아 주세요
댓글 RSS 주소 : http://iamyhs.com/tc/rss/comment/476