小编Esk*_*nen的帖子

在Swagger 2.0中为数组定义枚举

type": "array",
"items": {
    "type": "string",
    "enum": ["MALE","FEMALE","WORKER"]
}
Run Code Online (Sandbox Code Playgroud)

要么

type": "array",
"items": {
    "type": "string",
},
"enum": ["MALE","FEMALE","WORKER"]
Run Code Online (Sandbox Code Playgroud)

没有关于这个的规范.当然,目标是让swagger-ui显示枚举值.

swagger swagger-2.0

9
推荐指数
2
解决办法
1万
查看次数

Tomcat 重启后会话 JDBCStore 失败 java.lang.Class.forName NullPointerException - 但只有一分钟左右,然后工作

所以,我有一个有效的 Tomcat JDBC 会话存储解决方案已经有一段时间了。我部署了我认为不相关的更改(并且我回滚到之前的战争并且新问题仍然存在)。

问题

我可以重现这样的问题

  1. systemctl restart tomcat
  2. 等待战争加载,经理响应等
  3. 访问获取会话的 Web 应用程序页面,syserr:
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.catalina.session.JDBCStore.open(JDBCStore.java:955)
Run Code Online (Sandbox Code Playgroud)

(apache的JDBCStore实现的这部分尝试使用类名加载db驱动程序)

  1. 我一直在访问网页 -> syserr 出现同样的错误
  2. 我继续这样做一分钟左右
  3. 错误突然不再出现并且会话存储正常工作(将新会话一直保持到正确的数据库,自上次正确重启以来获取会话)

我试过的

  • 我已经检查了 context.xml(具有 JDBCStore 配置)没有被更新更改(并且肯定没问题,因为应用程序最终确实可以工作)
  • 我已经仔细检查了 jdbc 驱动程序是否在 tomcat/lib 文件夹中,具有权限等(当然是因为该应用程序最终可以正常工作)
  • 我试图考虑可能导致此问题的服务器上的任何更改,但我正在绘制空白
  • kill -9 <pid>而不是杀死 Tomcatsystemctl restart没有区别
  • 停止 Tomcat,等待约 3 分钟并启动:没有区别,会话存储工作前仍需等待约 1 分钟

我怀疑 JDBCStore(它是“内部 Tomcat 的东西”,不是我的应用程序的一部分)无法使用 Class.forName 加载驱动程序,但是我在同一个 Tomcat 上运行的其他一些应用程序/连接轮询成功了,并且之后 JDBCStore 也可以工作。我不知道为什么现在会出现这种情况,但不能在一个月前说出来。无论如何,任何提示都会很好。

Tomcat8
openjdk version "1.8.0_265"
RHEL 7.9
Run Code Online (Sandbox Code Playgroud)

java classloader tomcat8

7
推荐指数
1
解决办法
81
查看次数

如何摆脱Oracle数据库中的NUL字符?

数据库:我有一个 Oracle11g 数据库,其中包含一个包含大约 1000 万行和大约 40 列的表。数据源自打孔卡时代,并已从一个 Oracle 版本转换到下一个版本数次。这是一个实时生产数据库,并在某种程度上持续使用。但它并不是那么重要(尤其是在夜间),以至于我无法通过昂贵的查询和更新来限制它。所以没关系。

编辑:字符集是 AL32UTF8。

问题:我注意到某些列包含 NUL 字符。我发现了由 1-4 个 NUL 字符组成的值,但理论上可以有与该列可用的字符数一样多的值。我想摆脱 NUL 字符。如果值中只有 NUL 字符,我想将该列的值更改为 SQL NULL。如果其他字符之间有 NUL 字符(我还没有看到任何情况),我想删除它们(用“”替换)。

我尝试过的

我注意到select rawtohex(mycolumn) from mytable返回例如“000000”(3 个 NUL 字符)。

select rawtohex('A') from dual; 返回“61”

select rawtohex('Ä') from dual; 返回“C385”。

我已经探索过寻找这样的 NUL 字符:

SELECT DISTINCT mycolumn 
FROM mytable
WHERE rawtohex(mycolumn) LIKE '%00%;'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我还没有找到任何包含 rawtohex 将包含“00”的字符的任何列,除了只有 NUL 字符的列。所以看起来使用LIKE '%00%'是安全的。但我不确定 rawtohex 的 oracle 实现以及它使用什么样的十六进制编码。

所以......当我继续探索这条道路并最终编写一个脚本来修复垃圾时,我在问是否有人以前遇到过这个工作,你是如何解决它的。:)

oracle oracle11g

5
推荐指数
1
解决办法
7617
查看次数

标签 统计

classloader ×1

java ×1

oracle ×1

oracle11g ×1

swagger ×1

swagger-2.0 ×1

tomcat8 ×1