Open Web Start日志出现Unknown Source错误排查求助
Open Web Start日志来源识别问题解决方案
问题现象
运行XYZ Java应用时,Open Web Start(OWS)本地日志重复出现如下错误,且错误日志中混入了应用的正常INFO日志,OWS无法正确识别这些日志的来源:
[ITW-APP ][2025-01-20 16:04:47.325 CET][ERROR][java.base/sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)] 4190 [AWT-EventQueue-1] INFO xxx.database.DBConnection - Opened JDBC connection jdbc:oracle:thin:@xx.xxx.xxx.xx:xxx:xxxx in xxx.database.XXXConnection@xxxxx
应用通过Linux Tomcat提供的JNLP文件正常下载运行,但日志记录环节存在来源识别异常。
解决步骤
在JNLP文件中明确应用标识
在JNLP的<information>标签下添加应用名称和厂商信息,帮助OWS识别应用身份:<information> <title>XYZ Application</title> <vendor>你的厂商名称</vendor> <description>XYZ Java业务应用</description> </information>添加OWS专属日志属性
在JNLP的<resources>标签中加入应用日志标识属性,强制OWS关联日志来源:<resources> <!-- 保留原有资源配置(如j2se、jar等) --> <property name="itw.logger.app.name" value="XYZ"/> <property name="java.util.logging.manager" value="java.util.logging.LogManager"/> </resources>规范应用日志输出方式
确保XYZ应用使用标准Java日志API(java.util.logging.Logger)输出日志,而非直接使用System.out/System.err。输出时指定明确的日志名称,例如:private static final Logger logger = Logger.getLogger("XYZ.database.DBConnection"); logger.info("Opened JDBC connection jdbc:oracle:thin:@xx.xxx.xxx.xx:xxx:xxxx in xxx.database.XXXConnection@xxxxx");标准日志API能让OWS更准确地识别日志来源和级别。
验证JNLP的MIME类型
在Linux Tomcat服务器上,确保JNLP文件的MIME类型配置为application/x-java-jnlp-file,避免OWS解析时出现异常。可在Tomcat的web.xml中添加:<mime-mapping> <extension>jnlp</extension> <mime-type>application/x-java-jnlp-file</mime-type> </mime-mapping>清理OWS缓存并重启应用
打开OWS的设置界面,找到缓存管理选项,清除XYZ应用的缓存文件,然后重新通过JNLP链接启动应用,确保加载最新的配置。
内容的提问来源于stack exchange,提问作者Yedima
相关产品推荐
相关产品推荐

