Java ODBC-Zugriff auf x64-Windows / Advantage Database Server

64 Bit ist ein Trend, der nicht mehr aufzuhalten ist. Endlich ist die 3GB-Grenze auf den Clientbetriebssystemen Geschichte.
Mit Windows 7×64 habe ich auch meine Programmierumgebung auf 64 Bit umgestellt – damit gingen meine Probleme los.

Bisher habe ich mit Java und ODBC auf meine ADS-DBF-Dateien zugegriffen mit folgender Konfiguration:

Unter Windows 7 funktionierte die Datenbankanbindung jedoch nicht mehr. Erste Hürde: Installation eines 32-Bit ODBC-Treibers.
Es gibt unter Windows 7 64 Bit die ODBC-Verwaltung in 32 und in 64 Bit:

ODBC Datenquellenadministrator 32 Bit:
c:\windows\SysWOW64\odbcad32.exe

ODBC Datenquellenadministrator 64 Bit:
c:\windows\System32\odbcad32.exe

Die ODBC-Verbindung klappt jedoch nur in Kombination mit 32 Bit Java und 32 Bit ODBC. Auf reiner 64-Bit Ebene funktioniert die Verbindung nicht.
Es kommt folgende Fehlermeldung:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at rentasad.lib.db.ODBCConnection.connect(ODBCConnection.java:68)
at rentasad.lib.db.ODBCConnection.(ODBCConnection.java:29)
at rentasad.main.KreditkartenZuDTIGenerator.main(KreditkartenZuDTIGenerator.java:45)

Diese Fehlermeldung lässt sich jedoch ziemlich einfach beheben.

Es muss ein 32 Bit JDK installiert werden. Dieses wird zum Ausführen der Java-Applikation verwendet.
Einrichtung eines 32-Bit SDKs für eine Applikation

Zeit eines PCs oder Servers per Befehl mit NTP-Server synchronisieren

Mit einem einfachen Befehl lässt sich Windows darauf einstellen, seine Uhrzeit mit einem NTP-Server zu synchronisieren:

w32tm /config /syncfromflags:manual /manualpeerlist:pool.ntp.org /reliable:no /update

pool.ntp.org kann durch einen beliebigen NTP-Server ersetzt werden:

 

 

Den Befehl einfach in einer mit Admin Rechten ausgeführten Eingabeaufforderung (CMD.exe) eingeben und anschliessend per

net stop w32time & net start w32time

in der selben CMD den Zeitservice neustarten.

 

Shutdownbefehl für Windows Server 2008 R2 oder Windows Server 2012

Unter Windows XP, Windows 7 oder Windows Server 2003 war das Neustarten von Windowscomputern mittels Shutdown-Befehl kein Problem

Im Dosfenster wurde einfach eingegeben

shutdown -r -t 30

-r steht für Neustart (Reboot)
-s steht für Herunterfahren (Ausschalten/Shutdown)

-t [sekunden] gibt die Zeit vor nach wie vielen Sekunden der PC heruntergefahren wird. Im obigen Beispiel sind es 30 Sekunden

In Kombination mit dem Taskplaner ließ sich so ein Server einfach zeitgesteuert neustarten.

Unter Servern ab Windows Server 2008 R2 funktioniert dieser Befehl nicht mehr. Da möchte das System ein paar Parameter mehr haben.

Beispielsweise soll der Server in 11 Stunden neu gestartet werden:

shutdown /r /t 39600 /d p:0:0 /c „Aufgrund von Wartungsarbeiten wird dieser Server in der Nacht um 0:00 Uhr neu gestartet“

Die Anzahl an Sekunden muss man sich an der Stelle einfach errechnen und in den Befehl einfügen.

Netzwerkumgebung zeigt keine Computer an/ Windows Server 2008 Einrichtung

Problem:
Im Windows Netzwerk bzw. der Netzwerkumgebung werden keine Computer angezeigt.

Lösung:

Damit das Windows Netzwerk andere Computer, Freigaben etc. anzeigt, müssen folgende Dienste aktiviert sein:

  • DNS Client
  • Funktionssuche Ressourcen Veröffentlichung
  • SSDP Suche
  • UPNP Gerätehost

Diese Dienste sind von Haus aus in einem frisch installiertem Windows Server 2008 teilweise nicht aktiviert und müssen auf automatisch gestellt werden.

In der Praxis hat dieser Tip mir bereits häufig weitergeholfen.

 

 

Exchange: Nutzer sollen im Namen anderer Postfächer/Nutzer senden dürfen.

Viele Administratoren kennen die Anforderung. Ein Mitarbeiter soll im Auftrag eines anderen eine Email beantworten. Ein weiterer Anwendungsfall ist auch das Beantworten einer Serviceanfrage vom Servicepostfach.

Wenn man versucht, die Nachricht im Namen eines anderen Absenders zu senden, kommt folgende Mail Delivery mit dem Status „Unzustellbar“:

Ihre Nachricht hat einige oder alle Empfänger nicht erreicht.
Betreff: AW: – Anfrage: Kundenservice
Gesendet am: 22.11.2010 08:53
Folgende(r) Empfänger kann/können nicht erreicht werden:
a@b.de am 22.11.2010 08:53
Sie sind nicht berechtigt, Nachrichten an diesen Empfänger zu senden. Wenden Sie sich an den Systemadministrator.
MSEXCH:MSExchangeIS:/DC=local/DC=exchange:EXCHANGE

Diese Einstellung lässt sich in der Active-Directory Benutzer-Managementkonsole einstellen
Dazu müssen unter Ansicht die „Erweiterten Funktionen“ aktiviert werden.

Anschließend wird bei dem Postfach unter dem Tab „Sicherheit“ die Berechtigung „Senden als“ oder auch „Empfangen als“ der Haken gesetzt.