레이블이 API/IF/개발인 게시물을 표시합니다. 모든 게시물 표시
레이블이 API/IF/개발인 게시물을 표시합니다. 모든 게시물 표시

2024년 4월 19일 금요일

자바 스윙 초보자의 기본 디자인 만들기

한 화면에 여러 탭 메뉴가 존재하는 화면이며 각 각의 탭메뉴를 눌러서 여러 기능을 사용하려고 만든 디자인

Main.java

⁠public class Main {
public static void main(String[] args) {
new MainTabView();
}
}

MainTabView.java

⁠public class MainTabView extends JFrame{
public MainTabView(){
JTabbedPane tabPnl = new JTabbedPane();
createTabbedPane(tabPnl);

//메뉴바 생성
//JMenuBar mb = new JMenuBar();
//메뉴바 > 메뉴생성
//JMenu screenMenu = new JMenu("메뉴1");
//메뉴바 > 메뉴생성 > 메뉴아이템 생성
//JMenuItem searchPOO = new JMenuItem("메뉴아이템1");
//JMenuItem chkDataInputDate = new JMenuItem("메뉴아이템2");
//메뉴에 아이템 추가
//screenMenu.add(searchPOO);
//screenMenu.add(chkDataInputData);
//메뉴바에 메뉴 추가
//mb.add(screenMenu);

//화면구성
add(tabPnl, BorderLayout.CENTER);
//add(mb, "North");
showGUI();
}
//탭메뉴 생성

2024년 3월 22일 금요일

개발자가 시선에서 4Byte 이모지(유니코드) 처리는 어떻게 해야할까요?

두개의 시스템 연계를 위한 인터페이스, EAI업무를 하다보면 사용자가 넣는 데이터인 이모지,유니코드 등 전송포맷에 안맞는 데이터로 인해 발생된 에러에 대해 확인 및 조치가 필요한경우가 존재함

이모지란

  • 이모지(Emoji)는 일본어로 그림문자를 의미
  • 어떤 감정이나 사물을 이미지로 나타낸거라고 하는데 이모티콘과는 다른것 같음
  • 일본에서 만들어졌다고 하며 첫 이모지는 1999년에 만들어졌다고 함
  • 일본의 휴대전화 제조사인 NTT DoCoMo에서 사용하기 위해 개발한 유니코드
  • Unicode Consortium(구글,애플 등 여러 IT기업들이 299년에 만든 단체)에서 새로운 이모지를 결정 공개
  • 영어보다 더 많은 나라에서 사용하고 있는 언어라고 함
  • 애플,구글,삼성 등 기기마다 다르게 보일수 있음

개발자가 바라본 이모지

  • 이모지는 유니코드로 표현 
  • 각 프로그램(기기)에서 유니코드에 대한 정의된 이미지를 보여줌 → 동일 유니코드이지만 서로 다른 그림문자 
  • 유니코드는 전세계 모든 문자를 프로그램에서 표현하는 산업표준
  • 여러 이모지가 합쳐서 결합(복합)이모지나 아니면 변형 이모지들이 존재
  • 이런 복합 이모지는 복잡한 유니코드 조합으로 만들어짐
  • 어떤 프로그램이나 서비스에서는 4Byte이미지에 대한 정책이 존재
    • 예를들어 인코딩 문제로 허용하지 않은 문자로 처리한다거나
    • 이런 이모지로 인한 이슈로 4byte이모지를 필터링하거나 처리하는 소스도 개발되는 경우도 있음
  • 이모지관리 https://home.unicode.org/

2024년 3월 9일 토요일

자바 스윙 메모장 예제 따라하면서 한글주석 달기


//chooser.addChoosableFileFilter(new MyFileFilter(".java","Java Source Files(*.java)"));  
//chooser.addChoosableFileFilter(new MyFileFilter(".txt","Text Files(*.txt)"));
chooser.addChoosableFileFilter(new FileNameExtensionFilter(".java","Java Source Files(*.java)"));  
chooser.addChoosableFileFilter(new FileNameExtensionFilter(".txt","Text Files(*.txt)"));

f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //프레임과 창닫기 작업을 무효화 

pos=ta.getCaretPosition(); //textarea상의 현재 커서의 위치를 얻어옴 
lineNumber=ta.getLineOfOffset(pos); //텍스트의 오프셋을 행 번호로 변환 
column=pos-ta.getLineStartOffset(lineNumber); //지정된 행의 개시 오프셋을 리턴 

//textarea안에 데이터 추가,삭제,변경 시 이벤트 발생  
DocumentListener myListener = new DocumentListener()  
{  
public void changedUpdate(DocumentEvent e){fileHandler.saved=false;}  
public void removeUpdate(DocumentEvent e){fileHandler.saved=false;}  
public void insertUpdate(DocumentEvent e){fileHandler.saved=false;}  
};  
ta.getDocument().addDocumentListener(myListener);  

//윈도우 이벤트
WindowListener frameClose=new WindowAdapter()  
{  
public void windowClosing(WindowEvent we) //윈도우의 시스템 메뉴의 닫기를 시도 할때 발생 
{  
if(fileHandler.confirmSave())System.exit(0);  
}  
};  
f.addWindowListener(frameClose);  

2024년 3월 8일 금요일

자바 스윙 컴퍼넌트 샘플 따라하기(JComboBox,JTable,JList)


JComboBox

여러 선택할수 있는 리스트를 출력해주는 컴포넌트
⁠label.setHorizontalAlignment(JLabel.CENTER)
레이블 영역의 텍스트를 가운데 정렬
⁠String languages[]={"C","C++"}
final JComboBox cb=new JComboBox{languages) 
배열의 데이터들을 콤보박스안에 보여짐
⁠cb.getItemAt(cb.getSelectedIndex())
선택한 콤보박스의 데이터를 가져옴

JTable

데이터를 행과열의 형태인 표로 보여주는 컴포넌트
⁠String data[][]={{"101",Amit"},{"102","Jai"}
String column[]={"id","name"}
final JTable jt=new JTable(data,column)
열의 명과 데이터를 셋팅하여 객체생성함
⁠jt.setCellSelectionEnabled(true)
행과 열을 동시에 선택할수 있는 선택모드
⁠ListSelectionModel select=jt.getSelectionModel();
⁠select.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
테이블의 로우를 오직 한개만 선택하게 해줌
⁠select.addListSelectionListenner(new ListSelectionEvent e)
버튼과 다른 리스트의 이벤트 처리
⁠public void valueChanged(ListSelectionEvent e)
로우 선택시 해당 메서드가 호출
⁠int[]row=jt.getSelectedRows()
여러개 로우를 선택시 배열로 담김
⁠int[]columns=jt.getSelectedColumns();
선택의 열들을 배열로 담음
⁠jt.getValueAt(row[i],columns[j])

2024년 2월 28일 수요일

생성형 AI모델의 종류와 특징 정리(GPT-3.5/4,클로드,제미나이,뤼튼 등)

 

네이버 큐(Cue)

  • 네이버 하이퍼클로바X를 검색에 접목하여 만들어진 AI검색서비스
  • 국내사용자에게 친숙한 네이버 플랫폼 활용
  • 블로그 유입 가능성이 줄어들 가능성?(광고수익 줄어들수 있을수도)


ElevenLabs(일레븐랩스)

  • 오디오콘텐츠를 생성 및 음성복제

Lasco.ai(라스코)

  • 네이버 자회사 스노우(슈퍼랩스)에서 출시한 이미지 생성AI서비스
  • 사용자가 입력한 단어기반으로 이미지를 생성
  • 글로벌 채팅 플랫폼 디스코드의 채널형태


Pandarank(판다랭크)

  • 이커머스 데이터 분석 플랫폼
  • 블로그 등 글쓰기 생성형 AI

2024년 2월 7일 수요일

자바 스윙 컴퍼넌트 샘플 따라하기(JButton,JLabel,JTextField,JTextArea,JPasswordField,JCheckBox,JRadioButton)

⁠JFrame f=new JFrame();
J프레임을 상속받지 않고 인스턴스 생성으로 사용할수도 있음
⁠setBounds(130,100,100,40)
버튼의 위치를 지정할수 있음

클래스 생성자 안에 프레임,버튼 등 소스 추가 후 main()안에서 불러서 사용할수도 있음

JButton

텍스트,아이콘이 있는 버튼 생성 및 둘다 없는 버튼을 생성할수 있음
⁠JFrame f=new JFrame("Button Example");
타이틀명과 함께 프레임 인스턴스를 선언할수 있음
⁠addActionListener(new ActionListener(){
Public void actonPerformed(ActionEvent e){
 tf.setText("Welcome to Javatpoint");
 }
});
컴퍼넌트의 이벤트처리를 할수 있음 예를들어 버튼을 클릭했을때 텍스트필드에 텍스트가 들어가는 처리
⁠new JButton(new ImageICon("D:\\icon.png")
이미지 버튼을 만들수 있는데 이미지 파일이 각 사용자 컴퓨터에 있어야 할듯
⁠f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
창종료(X버튼)을 눌렀을때 이벤트

JLabel

컨테이너에 텍스트를 추가하기 좋은 컴퍼넌트
⁠ㅣ1=new JLabel("First Label")
프레임에 텍스트를 배치
⁠b.addActionListener(this)
버튼 자기 객체를 넘겨주면서 이벤트 실행
⁠tf.getText()
텍스트필드의 데이터를 가져옴
⁠l.setText("ip")
레이블에 텍스트를 셋팅

자바 스윙(Swing)에 대한 기본정리

EAI프로젝트나 운영을 하다보면 필요한 프로그램을 웹으로 만들어서 사용했었는데 지인분이 자바 스윙(Swing)으로 만들어서 사용하는 모습을 보니 이런 방법도 괜찮아보여 정리하게 되었음

스윙이란?

  • JAVA에서 그래픽 사용자 인터페이스(graphical user interface, GUI)를 만들수 있는 기능
  • Swing은 javax.swing패키지를 사용
  • JDK에서 기본으로 제공하는 개발 툴킷, java.awt패키지 사용
  • AWT(Abstract Windows Toolkit)를 확장한 GUI컴포넌트
    • AWT는 플랫폼에 의존하며 MVC패턴 따르지 않으며 컴퍼넌트는 무겁고 적다고함
  • AWT기반이고 높은 호환성을 보여주고 있음
  • 버튼,체크박스표,리스트 등 다양한 컴포넌트 제공
  • M(model),V(view),C(Controller) 패턴을 따라감
  • 윈도우 기반의 가볍고 플랫폼에 독립적이며 자바 파운데이션 클래스 일부분
  • 창 기반 응용프로그램이며 JFC(Java Foundation Class)의 일부
    • 애플리케이션 개발을 단순화 하는 GUI구성요소
    • JFC의 종류로는 AWT,Java2D,Accessibility,Drag and Drop,Swing
  • 구성은 J로 시작하는 클래스,컨테이너와 컴포넌트 그리고 레이아웃
    • 컨테이너는 GUI애플리케이션 구축하려면 적어도 하나의 컨테이너 클래스가 필요
    • 컨테이너 클래스는 패널,프레임,대화상자 유형 존재
    • JFrame을 제외한 모든 요소들은 컴포넌트, 컴포넌트끼리 포함할수 없고 화면에 출력되는 객체
    • JFrame,JDialog는 컨테이너, 컴포넌트를 포함할수 있음
    • 레이아웃은 컴포넌트들의 위치를 자동으로 지정

2024년 2월 4일 일요일

윈도우10 작업 스케쥴러 .BAT 실행 셋팅방법

작업스케쥴러란?

  • 윈도우에서 가능한 스케쥴러
  • 실행파일을 일정시간마다 실행되게 하는 작업
  • 자바,파이썬 등 언어로 실행가능한 파일 만들수 있음

셋팅방법

  1. .BAT파일 생성
  2. 윈도우 돋보기 아이콘 누름 > 작업 스케쥴러 찾아 실행
  3. 새 작업 만들기 눌러 일반 > 이름 등을 입력
  4. 트리거 > 새로만들기 클릭 후 실행할 날짜/시간 셋팅
  5. 동작 > 새로만들기 클릭 후 실행할 .BAT파일을 찾아 넣음
  6. 조건에서 환경에 따라 셋팅
  7. 설정에서 필요한 기능에 대해 체크 및 설정

이클립스에서 실행가능한 .JAR파일 생성방법

JAR파일이란?

  • Java ARchiv = 자바프로젝트 압축파일?
  • 자바 클래스(컴파일된),라이브러리를 하나로 압축한 파일
  • 생성된 파일은 윈도우에서도 바로 실행하여 사용가능
  • 자바 애플리케이션 실행 시 클래스 경로에 추가하여 .jar파일 안에 코드를 사용
  • .jar파일 자체를 실행가능한 파일로 생성 가능
  • 윈도우에서 실행 시 자바가 설치되어야함
  • jar외에도 war(Web Archive)가 있는데 이 두개를 묶을수 있는게 ear(Enterprise Archive)

생성방법

  1. 이클립스 실행 후 자바 프로젝트 내 main메서드가 있는 .java파일을 선택 오른쪽 마우스 클릭 후 Export... 클릭
  2. Java > JAR File 선택 후 Next
  3. 배포할 소스 선택 및 다운로드될 경로 설정 후 Next
  4. Next
    • 'Save the description of this JAR in the workspace' 체크하면 다음에 파일을 더 빠르게 생성할수 있다고 함
    • 프로젝트 내 생성된 .jardesc 오른쪽 버튼 > Create JAR 클릭시 과정없이 바로 생성됨
  5. Finish
    • main class를 선택 가능 여러 main소스 존재 할때를 위한것?

이클립스 내 .EXE파일 만드는 건 Runnable JAR file로 생성 후 launch4j 설치해서 생성할수 있다고 함

2023년 3월 9일 목요일

SaaS,PaaS,IaaS 클라우드 모델의 특징 정리

SaaS vs IaaS vs PaaS: Differences, Pros, Cons and Examples 확인된 내용을 간략하게 재정리한 글입니다.

클라우드 서비스 모델에는 SaaS(서비스형 소프트웨어),IaaS(서비스형 인프라),PaaS(서비스형 플랫폼)의 세 가지 주요 클라우드 서비스 모델이 존재하며 요금은 종량제,구독,종량제와 구독요금 모델의 조합인 하이브리드로 분류된다고 하며 아래와 같이 좀더 상세하게 정리가 될것 같습니다.

"SaaS는 사용자가 클라우드 제공업체로부터 구매하여 사용할수 있는 클라우드 기반 소프트웨어
PaaS는 개발자가 클라우드를 통해 제공할수 있는 API(애플리케이션 프로그래밍 인터페이스)를 통해 맞춤형 애플리케이션을 구축할 수 있도록 지원
IaaS는 기업이 실제 제품을 판매하기 위한 소프트웨어, 콘텐츠 또는 전자상거래 웹사이트 등 클라우드 기반 서비스의 인프라를 구축하는 데 도움"

클라우드 모델 특징

SaaS(Software as Service)

  • 서비스형 소프트웨어 공급업체는 애플리케이션을 호스팅하여 사용자가 인터넷을 통해 사용
  • 저렴하고 편리하고 안전
  • 사용자는 기존 IT인프라에 소프트웨어를 설치하거나 다운로드하라 필요가 없음
  • 사용자가 항상 최신버전의 소프트웨어를 실행할수 있도록 보장
  • 유지 관리 및 지원은 클라우드 제공업체에서 처리
  • 데이터 사용을 관리하거나 애플리케이션을 유지관리할 필요가 없음
  • 큰 장점은 설정 및 실행이 가장 쉬운 클라우드 모델(바로사용가능)
  • 유지 관리가 가장 쉬움모델
  • 사용자를 추가하려면 기존 요금제 또는 구독을 업그레이드
  • 사용자는 제공업체의 클라우드 인프라를 제어할수 없음(장애시 제공업체 지원필요)
  • 기존 사내 소프트웨어를 SaaS애플리케이션과 통합하는데 어려울수 있음
  • 사용사례는 이메일,영업관리,CRM(고객관계관리),재무,HRM(인적자원관리) 등 엔터프라이즈 애플리케이션들

2023년 2월 20일 월요일

SAP PO에서의 ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다 에러원인

SAP PO의 JDBC Receiver어댑터 연계한 인터페이스에서 발생되었던 오라클에러인 'ORA-00933: SQL 명령어가 올바르게 종료되지 않습니다(SQL command not properly ended' 에러에 대한 원인에 대해 정리를 하였습니다.

에러내용을 보고 잘 몰라 구글에 검색을하게 되면 일반적으로 구문,문법 오류 작성한 쿼리에 대한 오타 등 내용들을 볼수 있지만 

구문오류가 아닌
소스쪽에서 보내는 데이터와 타겟DB 테이블의 컬럼타입간에 오류였습니다.

에러로그의 페이로드나 Receiver어댑터의 logSQLStatement 파라메터를 셋팅하고 실행되는 쿼리를 보고는 알수는 없었지만 정상적으로 처리되는 데이터와 실패되는 데이터를 비교해보면 특정컬럼의 데이터가 다른경우를 볼수 있고 

이번 에러의 원인은 예를 들어 특정 컬럼의 데이터가 2311addf일때는 에러가 발생되고 2311일때 성공되었습니다.

SAP PO의 오라클 연계 인터페이스를 보면 에러내용이 직관적이라서 다른 DB(MS-SQL,MY-SQL,DB2 등)들보다 에러원인을 찾는데 수월하지만 이번에러같은경우는 좀 햇갈렸던것 같습니다.

2023년 2월 9일 목요일

컴알못들을 위한 CPU(클럭,코어,캐시,스로틀링,전력)스펙 쉽게 이해할수 있는 짤

아는 지인분이 보내준 CPU 스펙 짤을 보고 컴알못(컴퓨터를 알지도 못하는 사람)인 저도 이해가 되는 신기함에 정리를 해보았습니다.

일단 구글에서 검색한 내용을 정리하면

클럭(Clock)

  • CPU의 속도를 나타내는 단위
  • 1초동안 파장이 한번 움직이는 시간을 의미??
  • 클럭수가 높을수록 처리속도가 빠르다

코어(Core)

  • CPU의 핵심적인 역할을 수행해내는 중심부 역할
  • 컴퓨터에서 가장 핵심이 되는 중앙처리장치
  • 연산작업(데이터처리)을 수행하는 핵심적인부분
  • CPU의 성능을 판단하는 기준

2022년 12월 31일 토요일

JWT(Json Web Token)는 무엇인가요?

지인한테 JWT에 대한 웹토큰방식? 에 대해 들어 궁금하여 간략하게 특징정리와 나중에 시간이 되면 기존에 알고 있었던 엑세스 토큰(OAuth 2.0) 방식과의 차이점을 비교해보는 내용도 정리해보려고 합니다.



JWT의 특징

  • Json 포맷을 사용한 Claim기반의 웹 토큰
  • 사용자 인증을 위한 오픈스텐다드(RFC 7519)
  • 토큰 자체를 Self-Contained 방식으로 안전하게 전달
  • 사용자 인증에 자주 사용
  • 사용자 인증에 필요한 정보를 토큰 자체에 담고 있습니다(서버에 토큰정보를 저장할 필요없음)
  • 일반토큰 기반과 다르게 별도의 인증저장소나 서버, 데이터베이스에 의존하지 않는다고 합니다
  • JWT는 점으로 구분된 3개의 base64인코딩 문자열로 구성(header,payload,signature)
  • 헤더는 암호화 알고리즘(SHA256,RSA 등),토큰등에 대한 정보
  • 페이로드는 전달하려는 유저의정보(클레임),토큰에 대한 발급,만료일 등
  • 서명은 Secret key로 암호화 후 토큰을 변조하기 어렵게 합니다(핵심적인) 
  • C,JAVA,Python 등 여러 프로그래밍 언어에 지원
  • 기존 세션 토큰의 분산화된 세션관리 문제 에 대한 보완
  • 쿠키사용으로 인한 보안 취약점 개선
  • 토큰이 노출되면 보안적으로 취약해질수 있습니다(로컬스토리지 저장 주의)
  • 하나의 키에만 의존(키관리 중요)

*클레임이란? 사용자의 아이디나 기타 데이터들

*Self-contained란? 토큰 자체에 사용자의 권한,서비스 정보를 포함하는것


2022년 9월 29일 목요일

SELECT * 사용에 대한 특징 간략정리

*는 별표이며 문자라고도 하고 애스터리크(Asterisk)라고 하는데요. 상징,기호,표시,각주,참고 등 여러 의미가 있는것 같습니다. 시스템을 개발하거나 운영하는 경우 대체로 EAI에서 여러 DB와 연계할때 SELECT * 를 아니면 SELECT 컬럼명으로 조회하는 경우가 있는데 습관적으로 사용하는 방법에 대해 간략하게 정리를 해보고 나중에 구체적인 내용도 기회되면 내용을 추가해봐야겠습니다.

  • * 사용시 불필요한 컬럼까지 Fetch하게 됩니다.(응답시간이 증가)
  • Index only access, Index only scan을 사용할수 없습니다.(select할 컬럼에 인덱스 존재 시)
  • SybaseIQ같은 DB는 Column in block저장방식을 택하고 있어 아스타리크를 사용 시 성능차이가 클수 있다고 합니다.(DB마다 다를듯)
  • SELECT * 은 가독성 및 향후 운영(유지보수 관점)을 위해 지양한다고 합니다.
  • Spring같은 프레임워크에서는 자동매핑을 선호하여 select *를 사용하는 경우가 있다고 합니다.(단, 컬럼명 수정/삭제 되는 경우 오류가 발생될수 있다고 함)
  • 리소스 사용률이 높아지고 지연시간이 길어질수 있다고 합니다.
  • SELECT *를 사용 시 많은 열의 캐싱을 시도합니다.(사이즈가 큰 TEXT나 BLOB 컬럼타입도 존재) 
  • SELECT *를 사용하여 다른 테이블로 복사 시 잘못된 열에 복하는 경우도 있다고 합니다.(두개의 테이블의 컬럼순서가 다른경우)

2022년 8월 15일 월요일

아파치 카프카에 대한 간단한 정리

아파치 카프카에 대해 간단하게 정리해보겠습니다.


카프카란?

실시간으로 대용량,대규모 데이터를 처리할수 있는 고성능 TCP네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 분산*데이터스트림 플랫폼(분산메시징플랫폼)이라고 하며 EAI같이 예를들어 A와 B아니면 C로 필요한곳에 데이터를 동시에 전송가능하기 위해 링크드인(LinkedIn)에서 2011년초 오픈소스로 개발한 내부시스템였지만 현재는 많은 곳에 사용되는 메시징시스템의 대안이 될수 있는 데이터 스트리밍 솔루션인것 같습니다. 뭔가 어려운데요?
어떤글에는 메일로 비유하여 쉽게 카프카 개념을 설명한 글이 있는데요.
"메일을 보내는 사람은 받는 사람의 주소를 알고 메일을 보내면 받은 사람은 언제든지 메일을 볼수 있다"

2022년 7월 28일 목요일

Azure(애져) File REST API가 뭔가요?

SAP PO운영을 하다보면 여러 플랫폼,기술,솔루션 등에서 만들어진 시스템들과 연계하는 일이 자주 있으며 이번에는 Azure(애저) Files의 REST API에 대해 듣게 되어 간략하게 정리를 해보려고 합니다.

Azure File란?

애져 파일은 산업표준 SMB(서버메시지블록?) 또는 NFS(네트워크파일시스템) 프로토콜을 통해 엑세스 할수 있는 파일 공유를 제공하며 SMB나 NFS를 통한 파일 공유해서는 Windows,Linux,macOS 등 여러 운영체제의 클라이언트에서 엑세스가 가능하다고 합니다.

Azure Files REST API란?

애져 파일 서비스에 저장된 데이터에 엑세스 가능한 REST API를 제공하는데 기본 파일 시스템 API를 사용하여 원격파일에 공유나 엑세스 할수 있는 SMB나 NFS와는 다르다고 합니다. 실행방식은 C#,JAVA,JavaScript 등 여러 개발언어에 대한 API를 제공하여 Azure Sdk를 통해 수행 가능한것 같습니다.

파일 REST API의 특징을 보면 애져파일 용으로 설계되었으며 SMB나 NFS를 통해 엑세스 할 수 없는 애져파일 기능에 엑세스가 가능한것 같고 효율적인 복사 등의 작업을 수행할수 있는것 같고 애져 파일 공유에 엑세스하는 클라우드 서비스 또는 응용프로그램에서는 File REST API를 사용하는게 더 유용한것 같습니다. 

PO에서는 관련 어댑터는 없고 REST어댑터를 통해 엑세스를 해야될것 같은데요. 만약 이것도 안되면 자바프록시 등을 통해 애져파일 REST API에서 제공하는 소스나 라이브러리를 통해 엑세스하는 방법을 찾아볼수도 있을것 같습니다. 자세한건 

'Azure Files REST API' 사이트를 통한 내용을 참고하면 도움이 될것 같습니다.

2022년 6월 16일 목요일

MYSQL프로시 호출시 User does not have access to metadata required to determine stored procedure parameter... 에러 해결방법

SAP PO와 MYSQL 프로시저 동기방식으로 연계시 발생된 에러발생 후 해결하는 과정에 대해 정리를 했으며 연계하는 프로시저는 INPUT,OUTPUT 존재했는데 오라클 프로시저 연계할때와는 Request,Response구조나 DB호출파라메터가 달라지는것 같습니다.

첫번째에러내용

java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter type. If rights an not be granted, configure connection with 'noAccessToProcedureBodies=true' to have driver generate parameters that represent INOUT strings irregardless of atual parameter types
번역기를 돌려보면 연계하는 MYSQL DB의 권한확인이나 PO에서 호출하는 JDBC호출 URL에 파라메터 추가 한 후 테스트가 필요해보이는것 같습니다.

2021년 6월 26일 토요일

CXF Webservice(SOAP) Provider for File Attachment In JAVA and SAP PO - Server Side

테스트환경

Eclipse Version 2018-12(4.10.0)
JDK 1.8._201
Tomcat 8.5
CXF 3.3.3

SOAP UI -> JAVA(CXF) 파일 전송

1. Webservice(SOAP) Provider 프로젝트 생성

이클립스에서 Dynamic Web Project를 만들어 웹서비스를 위한 클래스와 메서드를 생성
오른쪽 마우스버튼 > Web Service > Create Web Service를 클릭하여 해당하는 메서드의 CXF 웹서비스를 생성하면 WEB-INF 아래 cxf-beans.xml과 WSDL파일이 생성됩니다.

2021년 6월 11일 금요일

Difference between PO/PI/XI XML version 0.1 and 1.1


기본적으로 XML포맷으로 인터페이스를 하는 SAP XI/PI/PO에서 소스,타겟 간에 테스트나 운영중인 인터페이스에서 이상한 문자로 인한 매핑에러가 발생되는 경우가 있습니다.
"Character reference &# See error logs for details"
이렇게 XML에서 허용안하는 문자에 대해 가끔 에러가 발생되어 송신측이 SOAP인경우 CDATA로 인한 데이터를 묶어주거나 JDBC인경우 송신측 문제가 되는 데이터를 삭제해주는데 PO에서는 자바매핑으로 해결하는 경우도 있습니다.
근데 이런방법들도 완벽하지 않은게 PO에서는 어떤 문제가 되는 데이터가 유입되는지는 알수 없기에 100% 해결될수 없는 부분이 있다고 생각이 듭니다.

다른 사이트에서 보았는데
SOAP호출시 사용되는 CDATA로 묶이는 데이터에도 허용안하는 문자들로 인해 이클립스 안에서 에러가 발생될수 있다고 하네요.
"An invalid XML character (Unicode: 0xb) was found in the CDATA section"
송,수신간에 OAP연결 방식에도 SOAP버젼이 1.1과 1.2가 존재하는데 이 두개가 W3C(World Wide Web Consortium) 표준이라고 하는데 SOAP 1.1버젼은 XML 1.0이라고 합니다.

2021년 4월 27일 화요일

Resolving an error that occurs when executing the WSDL file Generate Client in Eclipse

SAP PO의 Audit로그를 간단하게 보기위해 Directory API사용을 하려고하는데 'AdapterMessageMonitoringVi' WSDL파일을 사용할때 오류가 발생됩니다.

현상, 에러

Apache CXF 3.3.3버젼으로 사용시 아래와 같은 에러발생
WSDLToJava Error: org.xml.sax.SAXParseException; schema_reference:
accessExternalSchema 속성으로 설정된 제한으로 인해 'http' 엑세스가 허용되지 않으므로 스키마 문서 'ws-addr.xsd' 읽기를 실패했습니다.