Lập trình

Những lỗi thường gặp khi sử dụng intra-mart

Dạo gần đây mình được vào 1 dự án Java .dùng framework intra-mart và server Resin.Đây là framework theo mình khá hoàn chỉnh và triển khai nhanh. Tuy  nhiên trong quá trình build project, server cũng gặp khá nhiều lỗi.Hầu hết thì đã có giải pháp ở trên internet. Mình viết post này để note lại những bug thường gặp để các bạn nào có dùng intra-mart thì kham khảo cho tiện.(Tìm hiểu thì mới thấy khả năng chia sẻ kinh nghiệm của người Nhật cực kì tốt).

Mình sẽ tổng hợp trong quá trình việc nên post này sẽ up to date.

Link tiếng Nhật: https://qiita.com/locdv/items/a92dc98e18a5997e3567

1.Khi mở màn hình login thì xuất hiện lỗi NoClassDefFoundError

Nguyên nhân: Setting trong file routing-jssp-config bị sai => Kiểm tra file routing xem có bị lỗi cú pháp hay không , fix và restart lại resin

Cũng có thể nguyên nhân khai báo sai kiểu dữ liệu, hoặc kiểu dữ liệu đó không được hỗ trợ bởi framework. Ví dụ khi sử dụng 1 lib thì lib đó chỉ quy định dùng List<String> mà không dùng List<Object> chẳng hạn, thì khi bạn dùng cũng sẽ báo lỗi này.


javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class jp.co.intra_mart.foundation.router.RouterFactory$LazyHolder javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class jp.co.intra_mart.foundation.router.RouterFactory$LazyHolder at com.caucho.server.dispatch.FilterManager.createFilter(FilterManager.java:234) at com.caucho.server.dispatch.FilterMapper.buildDispatchChain(FilterMapper.java:169) at com.caucho.server.webapp.WebApp.buildInvocation(WebApp.java:4119) at com.caucho.server.webapp.WebAppContainer.buildInvocation(WebAppContainer.java:798) at com.caucho.server.host.Host.buildInvocation(Host.java:753) at com.caucho.server.host.HostContainer.buildInvocation(HostContainer.java:319) at com.caucho.server.cluster.ServletService.buildInvocation(ServletService.java:1064) at com.caucho.server.dispatch.InvocationServer.buildInvocation(InvocationServer.java:250) at com.caucho.server.dispatch.InvocationServer.buildInvocation(InvocationServer.java:223) at com.caucho.server.http.AbstractHttpRequest.buildInvocation(AbstractHttpRequest.java:1609) at com.caucho.server.http.AbstractHttpRequest.getInvocation(AbstractHttpRequest.java:1582) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:820) at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1353) at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1309) at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1293) at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1201) at com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:997) at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117) at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93) at com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.
java:169) at com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61) at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173) at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) Caused by: java.lang.NoClassDefFoundError: Could not initialize class jp.co.intra_mart.foundation.router.RouterFactory$LazyHolder at jp.co.intra_mart.foundation.router.RouterFactory.getRouter(RouterFactory.java:73) at jp.co.intra_mart.foundation.router.RoutingFilter.init(RoutingFilter.java:50) at com.caucho.server.dispatch.FilterManager.createFilter(FilterManager.java:204) ... 22 more

Tham khảo link ở đây : http://im.hatenablog.jp/entry/2018/04/18/131017

2. Lỗi IntramartDialectAutoSelector が NullPointerException

Nếu một ngày nào đó mà khi bạn login vào hệ thống intramart mà gặp lỗi này, không biết nguyên nhân tại sao.Vì lỗi này sẽ không có log cụ thể, mà chỉ chung chung như bên dưới. Thì nguyên nhân là do bạn setting: thông tin của tenant default không có trong data-source-mapping-config.xml(Trong quá trình tạo mới tenant tick nhầm nút default). Vấn đề này có thể sửa trong DB cũng được.


java.lang.NullPointerException
at jp.co.intra_mart.mirage.ext.dialect.IntramartDialectAutoSelector.
getDialect(IntramartDialectAutoSelector.java:25)
atjp.co.intra_mart.mirage.ext.dialect.IntramartDialectAutoSelector.
getTenantDatabaseDialect(IntramartDialectAutoSelector.jaa:13)at jp.co.intra_mart.mirage.ext.session.IntramartDatabaseManagerSession.
getTenantDatabaseSqlManager(IntramartDatabaseManagerSession.java:173)
at jp.co.intra_mart.mirage.ext.dao.DAOFactory.getTenantDatabaseDAO(DAOFactory.java:96)
...

Tham khảo link ở đây : http://09.hatenadiary.jp/entry/2016/04/15/070000

3. Cách để xem log debug, trace đầy đủ của resin

Khi chạy trên server thì có nhiều bug sẽ không hiện log: ví dụ như log liên quan đến data. Vì vậy để hiển thị tường minh và dễ dàng debug được thì bạn nên setting như bên dưới đây:

Tham khảo link ở đây : http://final.hateblo.jp/entry/2016/05/02/233956

4.Khi gặp cảnh báo JobStoreMirageSession xuất hiện liên tục ở log

Nguyên nhân do time ở server và local không mapping với nhau, nên dấn đến sai khác và QuartzScheduler chạy không đồng bộ.

Tham khảo link ở đây :

http://im.hatenablog.jp/entry/2017/12/26/181423

http://09.hatenadiary.jp/entry/2015/07/14/113232

Cách fix thì tham khảo ở đây : http://jisakupc-technical.info/web-survice/4136/

5.Khi gặp log リソースグループが登録されていません

Lỗi hiển thị như bên dưới

jp.co.intra_mart.foundation.authz.services.ResourceNotFoundException:
[E.IWP.AUTHZ.DECISION.10007] リソースグループが登録されていません。 URI = service://test/test

Nguyên nhân: do hệ thống không nhận được thông tin của routing-xxx-config/***.xml

Cách làm như sau :https://www.intra-mart.jp/document/library/iap/public/iap_release_note/texts/limitations/authz.html
1.Mở source code rồi comment đoạn liên quan đến  service://test/test
%CONTEXT_PATH%/WEB-INF/conf/routing-xxx-config/***.xml
2.Từ menu xoá menu liên quan đến 認可 ở trên, hoặc đổi tên service cũng được
3,Setting lại bước 1, và khởi động lại server
4.Mở 認可リソース và đăng kí lại service://test/test

Hoặc cách nhanh hơn là dùng link này để mở lại menu và xóa menu đi :https://www.earthlink.co.jp/engineerblog/intra-mart-engineerblog/2347/

6.Khi mở màn hình login mà bị lỗi セッションタイムアウトが完了しました。

Mà không hiển thị bất cứ lỗi nào ở console log thì lisence đã hết hạn.-> Login vào system/login để đăng kí lisence.

7.Lỗi không kết nối được DB

セットアップ情報の取得に失敗しました。データベースに接続できていない可能性があります.
指定されたテナントデータベース設(XXX)が存在しましせん。

Lỗi này thường gặp khi thay đổi môi trường từ server sang local (server,local cùng trỏ đến 1 db tenant chung)

Cách giải quyết như sau : login vào system/login-> chọn tenant đang bị lỗi -> テナント管理-> chọn tab テナント環境情報 và điền lại リソース参照名 sau đó 更新 là OK.

8. Khi tạo file imm ở jungling mà bị lỗi prolog

Nội dung lỗi như hình bên dưới: プロローグはコンテンツを指定できません。

Nguyên nhân : tên folder của project đang dùng có ký tự #,%.

Khắc phục: sửa lại tên folder không có ký tự đặc biệt là tạo được file imm

 

 

 

(Visited 2,294 times, 1 visits today)

Leave a Reply

Your email address will not be published. Required fields are marked *