Glassfish 4.1和MariaDB的麻烦

时间:2018-07-20 17:03:06

标签: ubuntu netbeans glassfish mariadb glassfish-4.1

我正在使用Netbeans 8.2,Glassfish 4.1和MariaDB开发企业应用程序,所有这些都在Ubuntu 18.04上进行。

但是,在与数据库的所有连接建立之后,Glassfish返回此异常:

Internal Exception: java.sql.SQLException: Unknown system variable 'OPTION'

如我所见,SET OPTION命令在MySQL 5.1中已被弃用,最后在MySQL 5.6中被删除。 MariaDB在其10.0版本中所做的相同。看来Glassfish 4.1仍在使用此命令。

这使我有两个主要解决方案:

  • 升级Glassfish:Glassfish 4.1.1非常不稳定,大部分时间都无法正常工作。新版本(5.0.x)与Netbeans 8.2不兼容。
  • 降级MariaDB:MariaDB 5.5在Ubuntu 18.04中不可用(在其网站上,最新的正式版本为14.04)。
  • 降级Ubuntu:我可以将操作系统降级到14.04,但我希望这是我的最后选择。

有人可以给我一些建议吗?谢谢!

2 个答案:

答案 0 :(得分:1)

我们的经验中的end of the period where Oracle offered a commercially-supported version of Glassfish, thus reducing it to a pure reference implementation role标志着Glassfish的可用性和稳定性显着下降,这真是令人遗憾。 Payara是基于Glassfish来源的外部维护的最新版本,但有很多改进。尽管他们已经停止了针对非付费客户的GF4演进,但他们仍然offer a downloadable version。我鼓励您进行测试,如果您喜欢Glassfish,那么您会喜欢Payara的:)

答案 1 :(得分:1)

正确的做法是使用支持现代SQL语法的软件版本。即使这不是最简单的解决方案,也很有可能在将来获得回报。


解决此问题的另一种方法是让MariaDB MaxScale位于应用程序和数据库之间,并对其进行配置,以将SET OPTION SQL转换为正确的SET形式。可以使用Regex filter来完成此操作,该操作用于此类情况。

这是用于小型SQL转换服务的MaxScale配置,可将SET OPTION转换为SET

[maxscale]
threads=auto

[my-database]
type=server
address=hostname-of-my-server
port=3306
protocol=MariaDBBackend

[database-monitor]
type=monitor
module=mariadbmon
servers=my-database
user=<username used to monitor the server>
passwd=<password for the user>
monitor_interval=5000

[replace-option]
type=filter
module=regexfilter
match=SET OPTION
replace=SET

[routing-service]
type=service
router=readconnroute
servers=my-database
user=<username used to monitor the server>
passwd=<password for the user>
filters=replace-option

[routing-listener]
type=listener
service=routing-service
protocol=MariaDBClient
port=3306