공부/넥사크로

[Nexacro] 넥사크로 N + SpringBoot 연동하기 2 - 프로젝트 설정 및 연동

데부한 2022. 5. 10. 00:18
반응형

 

Uiadapter

넥사크로의 Uiadapter를 사용하려고 gradle을 통해 라이브러리를 다운하려 했지만 아직 자사의 Nexus 서버가 불안정해서 Gradle을 통한 자동 다운은 못한다고 한다.. - 20220509 기준

그래서 플레이넥사크로에서 다운해야 한다. 해당 게시글 제일 하단에 라이브러리 파일들이 있다. 다운하고 압축 푼 다음에 프로젝트 최상위 경로에 'libs' 폴더를 만들고 압축 푼 라이브러리 파일들을 옮겨주자.

그리고 맨 위에 있는 nexacro-xapi-java-1.0.0.jar 파일은 기술지원센터에서 따로 받아야된다. 저거 없으니까 설정할 때 에러남;
참고로 파일을 다운하기 위해 로그인이 필요하다. 
대메뉴 Product > Nexacro N > Download > Server [API,XENI]메뉴를 타고 들어가면 있다.

저 파일 역시 압축을 풀고 libs에 넣어준다.

 

그리고 build.gradle에 아래 코드 추가.

//외부 libs 추가
implementation fileTree(dir: 'libs', includes: ['*.jar'])

 

그리고 인텔리제이 우측에 Gradle을 클릭 후 refresh한다.

그러면 저기 폴더에는 안 보이는데 쨌든 import 해서 uiadapter를 사용할 수 있다.

 

 

넥사크로 프로젝트 생성 및 설정

라이선스가 필요하다. 라이선스는 기술지원센터에서 제공받을 수 있다.

넥사크로를 실행하고 새로운 프로젝트를 만든다. 나는 testProject라 명명했다. 중요한 건 경로다.

프로젝트\src\main

바로 이 위치에 놔주자.

그리고 프로젝트가 생성이 되었으면 Generate path를 지정해야 한다.
넥사크로 상단에 Tools > Options... 클릭
Generate 클릭 후 Generate Path를 지정해주면 된다. static의 하위 폴더로 넥사크로 프로젝트와 다른 이름은 지정 안 해봐서 이름을 다르게 지정해도 되나 모르겠다. 안전하게 넥사크로의 프로젝트와 똑같은 이름의 폴더 생성 후 지정해주면 된다.

src\main\resources\static\testProject

Path 지정 후 넥사크로 상단 메뉴 Generate > Regenerate > Application을 클릭해준다.

그리고 TypeDefinition > Services 더블클릭

svc와 nexacrolib를 추가해주자. nexacrolib는 NexacroConfig 설정할 때 계속 밑줄 쳐져서 보기 싫어가지고 추가했다.

 

그리고 FrameBase의 Form_Work에 버튼을 하나 추가한다.

대충했다..

그리고 스크립트 작성

this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	alert("연동 테스트 완료");
};

 

 

프로젝트 설정

이제 인텔리제이에서 설정 파일들을 만들어줘야 한다.

WebAppConfig

@Configuration
public class WebAppConfig implements WebMvcConfigurer {

    // view Resolver 경로 설정
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/jsp", ".jsp");
    }

    // 루트 "/" 접속 시 index 페이지로 포워딩
    @Override
    @Order(Ordered.HIGHEST_PRECEDENCE + 1)
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
    }

    // Web Resource 경로 설정
    @Override
    @Order(Ordered.HIGHEST_PRECEDENCE + 2)
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/_resource_/**").addResourceLocations("classpath:/static/testProject/_resource_/");
        registry.addResourceHandler("/FrameBase/**").addResourceLocations("classpath:/static/testProject/FrameBase/");
        registry.addResourceHandler("/nexacrolib/**").addResourceLocations("classpath:/static/testProject/nexacrolib/");
        registry.addResourceHandler("/*.json").addResourceLocations("classpath:/static/testProject/");
        registry.addResourceHandler("/*.html").addResourceLocations("classpath:/static/testProject/");
        registry.addResourceHandler("/*.js").addResourceLocations("classpath:/static/testProject/");
    }

    // 메세지 소스 생성
    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();

        //메세지 프로퍼티 팔일의 위치와 이름을 지정
        source.setBasename("classpath:/messages/message");
        //기본 인코딩을 지정한다.
        source.setDefaultEncoding("UTF-8");
        //프로퍼티 파일의 변경을 감지할 시간 간격을 지정한다.
        source.setCacheSeconds(60);
        //없는 메세지일 경우 예외를 발생시키는 대신 코드를 기본 메세지로 한다.
        source.setUseCodeAsDefaultMessage(true);
        return source;
    }

    // 변경된 언어 정보를 기억할 로케일 리졸버 생성
    // 여기서는 세션에 저장하는 방식 사용
    @Bean
    public SessionLocaleResolver localeResolver() {
        return new SessionLocaleResolver();
    }
//
//    // 언어 변경을 위한 인터셉터를 생성
    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");
        return interceptor;
    }

    // 인터셉터 등록
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

}

내가 하나하나 다 작성한 건 아니고 플레이넥사크로에 있는 설정들을 참고했다. 이 파일에서 중요한 건 Web Resource 경로 설정 부분인데 static 다음 폴더명을 꼭 확인해야 한다.

 

NexacroConfig

@Configuration
public class NexacroConfig extends WebAppConfig implements WebMvcRegistrations {

    @Bean
    @Lazy(false)
    public ApplicationContextProvider applicationContextProvider() {
        return new ApplicationContextProvider();
    }

    @Override
    public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {
        return new NexacroRequestMappingHandlerAdapter();
    }

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        NexacroMethodArgumentResolver nexacroResolver = new NexacroMethodArgumentResolver();
        resolvers.add(nexacroResolver);
        super.addArgumentResolvers(resolvers);
    }

    @Override
    public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {

        NexacroHandlerMethodReturnValueHandler returnValueHandler = new NexacroHandlerMethodReturnValueHandler();

        NexacroFileView nexacroFileView = new NexacroFileView();
        NexacroView nexacroView = new NexacroView();
        nexacroView.setDefaultContentType(PlatformType.CONTENT_TYPE_XML);
        nexacroView.setDefaultCharset("UTF-8");

        returnValueHandler.setView(nexacroView);
        returnValueHandler.setFileView(nexacroFileView);

        handlers.add(returnValueHandler);

        super.addReturnValueHandlers(handlers);
    }

    /**
     * 넥사크로플랫폼 에러 처리 ExceptionResolver 등록
     */
    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {

        NexacroView nexacroView = new NexacroView();
        nexacroView.setDefaultContentType(PlatformType.CONTENT_TYPE_XML);
        nexacroView.setDefaultCharset("UTF-8");

        NexacroMappingExceptionResolver nexacroException = new NexacroMappingExceptionResolver();

        nexacroException.setView(nexacroView);
        nexacroException.setShouldLogStackTrace(true);
        nexacroException.setShouldSendStackTrace(true);
        nexacroException.setDefaultErrorMsg("fail.common.msg");
        nexacroException.setMessageSource(messageSource());
        nexacroException.setOrder(1);
        resolvers.add(nexacroException);

        super.configureHandlerExceptionResolvers(resolvers);
    }
}

이 설정 코드도 역시 플레이넥사크로에서 참고했고, 불필요한 코드는 최대한 제거했다.

 

설정 후 서버 라이선스 파일을 src\main\resources에 추가한다.

 

그리고 서버 시작하고 크롬에 localhost:8080으로 접속하면

 

페이지가 잘 뜬다..^^

끝!

 

- 이전 글

 

[Nexacro] 넥사크로 + SpringBoot 연동하기 1 - 프로젝트 생성

SpringBoot 프로젝트 생성 SpringBoot 프로젝트를 생성하기 위해 https://start.spring.io/ 접속 SpringBoot를 다음과 같이 설정한다. Gradle Project Java 11 2.6.7 (20220509 기준) Artifact : nexacro Name :..

devhan.tistory.com

 


  • 참고 
 

play nexacro:플레이 넥사크로

Play Nexacro is a community site for nexacro platform. 넥사크로 플랫폼 사용자 커뮤니티

www.playnexacro.com

 

 

play nexacro:플레이 넥사크로

Play Nexacro is a community site for nexacro platform. 넥사크로 플랫폼 사용자 커뮤니티

www.playnexacro.com

 

반응형