WildFly (18.0.1) 에서 JDBC 드라이버를 구성하는 데 문제가 있습니다 .
때마다 나는 열 (구성 / 서브 시스템 / 데이터 소스 및 드라이버 / JDBC 드라이버) ,
나는 얻다:
내부 오류 (세부 사항 : newValue가 널임)
오류 이미지 1 :
오류 이미지 2 :
어떤 도움이라도 대단히 감사하겠습니다!
WildFly (18.0.1) 에서 JDBC 드라이버를 구성하는 데 문제가 있습니다 .
때마다 나는 열 (구성 / 서브 시스템 / 데이터 소스 및 드라이버 / JDBC 드라이버) ,
나는 얻다:
내부 오류 (세부 사항 : newValue가 널임)
오류 이미지 1 :
오류 이미지 2 :
어떤 도움이라도 대단히 감사하겠습니다!
답변:
문제를 완전히 재현 할 수 있습니다. 나는 꽤 오랫동안 Wildfly 콘솔을 사용하지 않았지만 이것은 나에게 버그처럼 보입니다. 그러나 쉽게 반복하고 스크립팅 할 수있는 장점이있는 또 다른 방법이 있습니다.
jboss-cli
Wildfly bin 디렉토리에서 실행 하는 경우 스크립트를 사용하여 JDBC 드라이버 및 JEE 데이터 소스를 추가 할 수 있습니다. 내 스크립트는 다음과 같습니다
embed-server --server-config=standalone.xml --std-out=echo
batch
module add --name=org.postgres --resources=${user.home}/Downloads/postgresql-42.2.8.jar --dependencies=javax.api,javax.transaction.api
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
/subsystem=datasources/data-source=myDS/:add(connection-url=jdbc:postgresql://localhost:5432/dbname,driver-name=postgres,jndi-name=java:/jdbc/myDS,background-validation=true,background-validation-millis=60000,blocking-timeout-wait-millis=2000,flush-strategy=Gracefully,idle-timeout-minutes=5,initial-pool-size=4,max-pool-size=64,min-pool-size=4,password=the-password,query-timeout=10,track-statements=true,tracking=true,user-name=the-user,validate-on-match=false)
run-batch
이 스크립트는 서버를 실행하지 않고 실행해야합니다. 당신은 서버가 제거 후 실행되는 동안 실행하려는 경우 embed-server
, batch
및 run-batch
선. 기본적으로 이것은이 경우 PostgreSQL 드라이버 인 모듈을 만드는 것으로 시작합니다. 그런 다음 JDBC 드라이버와 마지막으로 데이터 소스를 추가합니다. 다음과 같이 실행할 수 있습니다.
jboss-cli.sh --file=the-file-name.cli
위의 파일에 위의 파일을 저장했다고 가정합니다 the-file-name.cli
. 다시 bin
명령 행에서이를 실행하려면 Wildfly 의 디렉토리가 경로에 있어야합니다.
이것은 와일드 플라이 / jboss 문제가 아닙니다. 버그는 Hal 관리 콘솔 (버전 3.2.1)에 있습니다. 이 오류를 수정하여 HAL 콘솔 버전을 3.2.4로 변경했습니다.
wget https://repository.jboss.org/nexus/content/repositories/ea/org/jboss/hal/hal-console/3.2.4.Final/hal-console-3.2.4.Final-resources.jar
sudo cp hal-console-3.2.4.Final-resources.jar /opt/wildfly/modules/system/layers/base/org/jboss/as/console/main/
sudo vim /opt/wildfly/modules/system/layers/base/org/jboss/as/console/main/module.xml
<resources>
<resource-root path="hal-console-3.2.4.Final-resources.jar"/>
</resources>
sudo systemctl restart wildfly or sudo service wildfly restart
이것은 분명히 알려진 문제 ( https://developer.jboss.org/thread/280649 및 https://issues.redhat.com/browse/WFLY-12642 참조 )이며 다음 릴리스에서 수정 될 예정입니다.
how_to_setup_postgresql_datasource_with_wildfly 링크를 사용하면 다른 방법으로 문제를 해결할 수 있습니다.
Standalone.xml은 서버의 구성 파일입니다. 관리 콘솔은이 파일을 쉽게 편집 할 수있는 UI입니다.
JDBC 드라이버를 작성한 'main'디렉토리에 복사하십시오. 이 디렉토리에서 다음과 같이 "module.xml"파일을 작성하십시오.
<resources>
<resource-root path="postgresql-42.2.1.jar"/>
<!-- Make sure this matches the name of the JAR you are installing -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
데이터 소스 작성 -Wildfly 설치 디렉토리의 / standalone / configuration 디렉토리로 이동하십시오. -standalone.xml을여십시오 (독립형 서버에서 사용하는 기본 구성 파일입니다)- 'datasource'를 검색하여 오른쪽으로 이동하십시오. -요소에서 PostgreSQL 및
Wildfly를 다시 시작해야하며 관리 콘솔에서 연결을 테스트하여 변경 사항을 확인할 수 있습니다.
<drivers>
<driver name="postgresql" module="org.postgresql">
<!-- for xa datasource -->
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
<!-- for non-xa datasource -->
<driver-class>org.postgresql.Driver</driver-class>
</driver>
</drivers>
<datasources>
<datasource jndi-name="java:jboss/datasources/StemoDS" pool-name="StemoDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/StemoDS</connection-url>
<driver>postgresql</driver>
<security>
<user-name>postgres</user-name>
<password>admin</password>
</security>
</datasource>
</datasources>
데이터 소스를 추가하는 다른 방법은 콘솔 라인 인터페이스 (CLI)를 사용하는 것입니다. 다시이 프로세스는 두 단계로 나뉩니다.
JDBC 드라이버 배포-Wildfly 설치 디렉토리의 / bin 디렉토리로 이동하십시오. -이 디렉토리에서 터미널을 열고 실행
./jboss-cli.sh --connect controller=127.0.0.1 (or jboss-cli.bat if you are on Windows)
모듈을 설치하려면이 명령을 실행하십시오
모듈 추가 --name = org.postgresql --resources = / tmp / postgresql-42.2.1.jar --dependencies = javax.api, javax.transaction.api
데이터 소스 생성 드라이버 생성은이 명령으로 수행됩니다
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgresql",driver-class-name=org.postgresql.Driver)
그런 다음 데이터 소스를 추가하는 마지막 명령
데이터 소스 추가 --jndi-name = java : jboss / datasources / StenusysDemoDS --name = StenusysDemoDS --connection-url = jdbc : postgresql : // localhost : 5432 / StenusysDemo --driver-name = postgres --user- 이름 = postgres --password = admin
관리 콘솔에서 연결을 테스트하여 변경 사항을 확인할 수 있습니다.
나는 같은 문제가 있었지만 해결책은 영숫자와 영숫자가 아닌 문자를 사용하여 암호로 콘솔 사용자를 만드는 것입니다.
마지막으로 크롬과 다른 웹 브라우저를 사용하십시오.