나의 마음을 ctrl+c,너의 가슴에 ctrl+v

Java Web application + SAP 연동시, 오류 관련의 건

1. 오류발생
Java 기반 Webapplication 과 , SAP 연동시 단순히 Java Webapplication 의 빌드 및 메이븐 package가 성공했다고,
의존성 문제에 대해 검증이 되는것이 아님.

구동중, 아래의 오류 출현

java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
 at java.lang.Runtime.loadLibrary0(Runtime.java:849)
 at java.lang.System.loadLibrary(System.java:1087)
 at com.sap.conn.jco.rt.DefaultJCoRuntime.loadLibrary(DefaultJCoRuntime.java:444)
 at com.sap.conn.jco.rt.DefaultJCoRuntime.registerNativeMethods(DefaultJCoRuntime.java:310)
 at com.sap.conn.jco.rt.JCoRuntime.registerNatives(JCoRuntime.java:1030)
 at com.sap.conn.rfc.driver.CpicDriver.<clinit>(CpicDriver.java:956)
 at com.sap.conn.rfc.engine.DefaultRfcRuntime.getVersion(DefaultRfcRuntime.java:43)
 at com.sap.conn.rfc.api.RfcApi.RfcGetVersion(RfcApi.java:261)
 at com.sap.conn.jco.rt.MiddlewareJavaRfc.<clinit>(MiddlewareJavaRfc.java:200)
 at com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:75)
 at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:23)
 at com.sap.conn.jco.rt.RuntimeEnvironment.<init>(RuntimeEnvironment.java:43)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 at java.lang.Class.newInstance(Class.java:374)
 at com.sap.conn.jco.ext.Environment.getInstance(Environment.java:155)
 at com.sap.conn.jco.ext.Environment.isDestinationDataProviderRegistered(Environment.java:401)

Enviorment.java 역컴파일 하여, Factory 패턴으로 참조하고 있는,
com.sap.vmc.core.SystemInfo 클래스를 찾지 못해 발생함을 확인

2. 오류조치
java path, 환경변수 다 확인하였으나, 설정된 곳에서는 해당 Package 참조하는 곳이 없음을 확인
최종적으로는 함께 첨부된 sapjco3.dll 에서 캡슐화하여, 포함하고 있을 것으로 예상.
해당 dll을 C:\Windows\System32 로 복사하여, WAS 재기동하니 정상 구동함. (OS bit 에 따라 참조 dll이 틀림)


3. 덧붙이는 글
개인적으로 NT 쪽 프로그래밍 경험이 없어, dll 의 등록, 역활, 호출, 실행절차에 대해 알지 못함.
NT 설치 솔루션 연동시에는 위의 사항 고려하여, 연관 dll 의 등록 여부, 검증여부를 확인할수 있어야 할것으로 예상.
첨부한 프로그램은 dll 이상유무를 확인할 수 있는 프로그램.

'error note' 카테고리의 다른 글

[error note] weblogic request json mapper error  (0) 2013.07.30

증상
로컬 Tomcat 환경의 경우 별다른 문제 없이 작동하나
웹로직 12 환경의 경우
org.codehaus.jackson.map.JsonMappingException: Can not create bean serializer for Object.class (through reference chain: xxx.vo.PortalPageVO["request"])
오류와 함계, json - vo 간 오류가 발생함.
request 객체를 최상위 vo 에서 올바르게 포함되고 있음.

조치방법
상위 vo 에서 할당된 request  변수의 get 메소드에 @JsonIgnore 추가

 @JsonIgnore
 public Object getRequest() {
     return request;
 }

오류예측
weblogic 및 tomcat 차이 이외에 오류 발생원인 찾지 못함.
로컬을 weblogic 으로 연동 후, 동일 증상 발생하는 지 확인이 필요.

 

'error note' 카테고리의 다른 글

Java Web application + SAP 연동시, 오류 관련의 건  (0) 2015.06.08