当我 运行 Wildfly 20 作为服务时设置一些关键路径时出现问题
Problem setting up some critical paths when I run Wildfly 20 as a service
当我 运行 Wildfly 20 作为服务时,我在设置一些关键路径时遇到问题。
当我在 /home/myuser/ 而不是 /opt 中安装(在“VM1”中)Wildfly 而不是作为服务并且 运行 它与以下内容一起安装时,我能够使用管理控制台的“测试连接”以使用 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]
我可以 运行 一个简单的 Java 测试应用程序在“VM02”系统上连接和转储数据库 table 与:
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,但我也不认为这会造成伤害。
当我 运行 Wildfly 20 作为服务时,我在设置一些关键路径时遇到问题。
当我在 /home/myuser/ 而不是 /opt 中安装(在“VM1”中)Wildfly 而不是作为服务并且 运行 它与以下内容一起安装时,我能够使用管理控制台的“测试连接”以使用 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]
我可以 运行 一个简单的 Java 测试应用程序在“VM02”系统上连接和转储数据库 table 与:
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,但我也不认为这会造成伤害。