当我将Wildfly 20作为服务运行时,设置一些关键路径时出现问题

问题描述

将Wildfly 20作为服务运行时,我在设置一些关键路径时遇到问题。

当我在/ home / myuser /中(而不是/ opt)将Wildfly安装(在“ VM1”中)并且不作为服务并通过以下命令运行时,我可以使用管理控制台的“测试连接”连接到使用sajdbc4驱动程序的Sybase sql Anywhere数据库

cd ~/wildfly-20.0.1.Final/bin
export LD_LIBRARY_PATH=/home/myuser/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main
export CLAsspATH=.:/home/myuser/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main/sajdbc4.jar
./standalone.sh

LD_LIBRARY_PATH设置驱动程序支持文件的路径。

另一方面,当我以与以前完全相同的方式安装Wildfly(在“ VM2”中)时,除了安装到/ opt以及以下将Wildfly作为服务运行的额外步骤外,管理控制台的“测试连接”失败:

cd ~/wildfly-20.0.1.Final/bin
export LD_LIBRARY_PATH=/opt/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main
export CLAsspATH=.:/opt/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main/sajdbc4.jar
sudo systemctl start wildfly

2020-08-28 13:13:41,341 INFO [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183:
Service status report WFLYCTL0184: New missing/unsatisfied dependencies: service jboss.jdbc-driver.sajdbc4_jar (missing) dependents: [service jboss.driver-demander.java:jboss/datasources/TestDB,service org.wildfly.data-source.TestDB]

我可以在“ VM02”系统上运行一个简单的Java测试应用程序,该系统使用以下方法连接和转储数据库表:

cd $HOME/Desktop
export LD_LIBRARY_PATH=/opt/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main
export CLAsspATH=.:/opt/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main/sajdbc4.jar
java sajdbc4DriverTest.java

提示我所有驱动程序文件都位于LD_LIBRARY_PATH位置。请注意,将Wildlfly作为服务启动会使用相同的路径。

任何人都可以解释为什么Wildfly忽略了我在启动服务之前设置的两条路径吗?

谢谢。

解决方法

未以这种方式设置服务环境变量。即使是sudo的使用也会更改为具有新环境变量的新用户。

相反,如果您按照wildfly-20.0.1.Final/docs/contrib/scripts/systemd中的说明安装了Wildfly,请在/etc/wildfly/wildfly.conf中添加环境变量。更像是:

# The configuration you want to run
WILDFLY_CONFIG=standalone.xml

# The mode you want to run
WILDFLY_MODE=standalone

# The address to bind to
WILDFLY_BIND=0.0.0.0

# Add Sybase native library dir
LD_LIBRARY_PATH=/opt/wildfly-20.0.1.Final/modules/system/layers/base/com/sybase/main

我认为您不需要设置CLASSPATH,但我也不认为这会造成伤害。