A following error might be output and starting Resin might be failed when Resin is started after a war file is deployed if you have set a shared folder in Windows Server as storage.
The error message is “There are no more files” in English.
----
java.io.IOException: There are no more files.
at java.base/java.io.WinNTFileSystem.canonicalizeWithPrefix0(Native Method)
at java.base/java.io.WinNTFileSystem.canonicalizeWithPrefix(WinNTFileSystem.java:461)
at java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:432)
at java.base/java.io.File.getCanonicalPath(File.java:618)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.getCanonicalPath(StorageLocalFileImpl.java:481)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.checkAccessable(StorageLocalFileImpl.java:394)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.<init>(StorageLocalFileImpl.java:91)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.<init>(StorageLocalFileImpl.java:102)
at jdk.internal.reflect.GeneratedConstructorAccessor45.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at jp.co.intra_mart.foundation.service.client.file.AbstractStorage.<init>(AbstractStorage.java:108)
at jp.co.intra_mart.foundation.service.client.file.SystemStorage.<init>(SystemStorage.java:40)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:48)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.update(SystemStorageFileUpdater.java:33)
at jp.co.intra_mart.system.service.impl.ServiceControllerImpl.startCoordinator(ServiceControllerImpl.java:189)
at jp.co.intra_mart.system.service.impl.ServiceControllerImpl.accept(ServiceControllerImpl.java:664)
at jp.co.intra_mart.system.service.impl.ServiceControllerImpl.start(ServiceControllerImpl.java:126)
at jp.co.intra_mart.foundation.service.ServiceController.start(ServiceController.java:49)
at jp.co.intra_mart.system.servlet.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:125)
at com.caucho.server.webapp.WebApp.callInitializers(WebApp.java:3570)
at com.caucho.server.webapp.WebApp.startImpl(WebApp.java:3890)
at com.caucho.server.webapp.WebApp.access$700(WebApp.java:209)
at com.caucho.server.webapp.WebApp$StartupTask.run(WebApp.java:5476)
at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173)
at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118)
----
[Occurrence Condition]
It might be occurred when you have set a shared folder in Windows Server as storage.
[Cause]
This is because it is processed as exception in JDK when an error ID of “ERROR_NO_MORE_FILES” is returned from OS.
This might be due to the following bug of JDK.
https://bugs.openjdk.java.net/browse/JDK-8234363 (English)
[Workaround]
It is confirmed that this event can be avoided with the following method.
1. Copy all folders included in the directory below which is expanded under Resin.
Copy source: under WEB-INF/storage/system
2. Paste the folders which you copied in the previous step to the directory below.
Copy destination: under {System storage directory}/storage
Example: If the storage path is X://storage/imart and the system storage directory name is system, X://storage/imart/system/storage
*Please check settings of the environment you use as the system storage directory of copy destination is different depending on settings.
Setting file reference - Storage configuration file
https://www.intra-mart.jp/document/library/iap/public/configuration/im_configuration_reference/texts/im_core/storage-config/index.html#%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%90%8D%E8%A8%AD%E5%AE%9A
[Related requirement]
This event is solved in “2020 Summer (8.0.26)”.
Requirement [31955] Accel Platform may fail to start when a shared folder on Windows Server is set as storage.
https://issue.intra-mart.jp/issues/31955
-- Target -------------------------------------------------------------------------
iAP/Accel Platform/All Updates
--------------------------------------------------------------------------------
FAQID:1029