Sziasztok!
Adott egy konzolos java program ami többek között jtds-t használ mssql-hez kapcsolódáshoz.
A laptopomon ez a programka gond nélkül kapcsolódik az sql szerverhez, azonban ha az éles gépre másolom a cuccot, ezzel a hibaüzenettel leáll:
---
# java -jar test.jar
2011.01.11. 20:17:41 test.DB dbConnect
WARNING: Exception
java.sql.SQLException: Network error IOException: Network is unreachable
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:410)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at test.DB.dbConnect(DB.java:31)
at test.DB.(DB.java:15)
at test.LogThread.(LogThread.java:25)
at test.Main.main(Main.java:25)
Caused by: java.net.SocketException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:307)
at net.sourceforge.jtds.jdbc.SharedSocket.(SharedSocket.java:257)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:311)
... 8 more
stb stb....
---
Elméletileg ugye hálózati probléma van, de megnéztem telnettel sőt egy python klienssel is megy a kapcsolódás és adatot is tudok vele a szerverről lekérdezni, szóval félretájékoztat a jtds driver.
Van valakinek ötlete mi lehet a baj?
Laptopon a következő java környezet van:
---
~/NetBeansProjects/test$ dpkg -l|grep sun-java
ii sun-java6-bin 6.20dlj-0ubuntu1.9.10 Sun Java(TM) Runtime Environment (JRE) 6 (ar
ii sun-java6-doc 6.20dlj-0ubuntu1.9.10 Sun JDK(TM) Documention -- integration insta
ii sun-java6-jdk 6.20dlj-0ubuntu1.9.10 Sun Java(TM) Development Kit (JDK) 6
ii sun-java6-jre 6.20dlj-0ubuntu1.9.10 Sun Java(TM) Runtime Environment (JRE) 6 (ar
ii sun-java6-plugin 6.20dlj-0ubuntu1.9.10 The Java(TM) Plug-in, Java SE 6
---
a célgépen pedig:
---
ii sun-java6-bin 6.22-1 Sun Java(TM) Runtime Environment (JRE) 6 (ar
ii sun-java6-jdk 6.22-1 Sun Java(TM) Development Kit (JDK) 6
ii sun-java6-jre 6.22-1 Sun Java(TM) Runtime Environment (JRE) 6 (ar
---
A proggit a laptolon forgattam netbeans-al és a doksi szerint a dist tartalmát átmásoltam úgy futtattam.
Valakinek van valami ötlete mi lehet a baj?
Én esetleg a java környezet különbségre tudok max gondolni ami problémát okozhat.
Hogyan tovább?
- 1431 megtekintés
Hozzászólások
Mssql hanyas (2000, 2005 v. 2008)? Ha jól értem a laptopon meg a szerveren is Linux van és egy másik gépen van az mssql windowson. Ugyanahhoz az mssql-hez kapcsolódsz laptopról és a szerverről is? Ha igen, akkor a telnet-es és pythonos próbát azt a laptopról indítottad vagy a szerverről?
Nem hiszem, hogy a java környezetek közötti különbség okozná.
- A hozzászóláshoz be kell jelentkezni
mssql 2005-ös, és így van, a laptopon egy ubuntu, a szerveren debian sid van és ugyanahhoz a windows-hoz akarok kapcsolódni.
Természtesen a telnet/pythont a szerverről indítottam mert onnan nem megy a proggy.
Én se hiszem hogy java környezet okozná mert akkor más lenne a hiba, de egyszerűen nincs ötletem mitől lehet.
megnéztem az sqlline utillal is, ami szintén jtds-t használ, azzal is ugyanez a hiba.
Arra tudok esetleg gondolni, hogy a jtds hálózat kezelése valahogy eltér a python-os megoldástól?
A szerver egyébként a 192.168.10.200/24 -ről kapcsolódna a 192.168.10.142-re szal 1 etherneten vannak.
A kapcsolódás kódja egyébként:
dbConnect("jdbc:jtds:sqlserver://192.168.10.142:1433/szerviz",
"username","passwd");
private void dbConnect(String db_connect_string,
String db_userid, String db_password) throws IOException
{
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(
db_connect_string, db_userid, db_password);
}
catch (Exception e)
{
log.getLogger().log(Level.WARNING, "Exception", e);
}
}
- A hozzászóláshoz be kell jelentkezni
Próbálkozzunk nyers tcp-vel.
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s = new Socket();
s.connect(new InetSocketAddress("195.228.252.138", 80), 10000);
s.close();
}
- A hozzászóláshoz be kell jelentkezni
Ezzel is ugyanezt produkálja.
Először beállítottam neki a 192.168.10.142 ip-t 1433-as porttal (sql), utánna saját magát 192.168.10.200 25- ös porttal egyik se megy.
Ugyanakkor:
telnet 192.168.10.200 25
Trying 192.168.10.200...
Connected to 192.168.10.200.
Escape character is '^]'.
220 test.hu ESMTP Exim 4.72 Tue, 11 Jan 2011 22:08:26 +0100
Érthetetlen...
Exception in thread "main" java.net.ConnectException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at tcp.Main.main(Main.java:24)
- A hozzászóláshoz be kell jelentkezni
Töltsd le az Oracle honlapjáról a JDK-t (a .bin változatot) és futtasd le a szerveren. Csak kicsomagolja magát az aktuális könyvtárba. Futtasd azzal. Hogy biztos legyen, hogy azt használod a java-t útvonallal add meg és a -version-re is "1.6.0_23"-t kell írnia.
- A hozzászóláshoz be kell jelentkezni
test:/usr/local/bin/tcp# /usr/local/src/jdk1.6.0_23/bin/java Main
Exception in thread "main" java.net.ConnectException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at Main.main(Main.java:17)
test:/usr/local/bin/tcp# /usr/local/src/jdk1.6.0_23/bin/java -version
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Server VM (build 19.0-b09, mixed mode)
- A hozzászóláshoz be kell jelentkezni
Vagy beleszaladtál ebbe. A lényeg: ha a "/proc/sys/net/ipv6/bindv6only" tartalma 1, akkor "the solution is to set net.ipv6.bindv6only=0 in /etc/sysctl.d/bindv6only.conf".
- A hozzászóláshoz be kell jelentkezni
És igen!
Ez volt az.
Nagyon szépen köszönöm a kimerítő segítségedet!
Vendégem vagy 1 sörre ;)
- A hozzászóláshoz be kell jelentkezni
Amit nem értek ezzel kapcsolatban:
Ubuntu és debian elég közel állnak egymáshoz.
Hogyhogy nem ment report debian mainternek ha ez ubiban (valószínűleg) kiderült?
Nem érdeke Ubinak hogy ilyesmit reportoljon oda?
/flame off
- A hozzászóláshoz be kell jelentkezni
Ez szerintem nem derült ki az ubuntuban. Egyszerűen annyi, hogy a debian-ban (más disztrókkal szemben) defaultban be van kapcsolva a "bindv6only" és ez nem tetszik a linuxos jdk-nak.
- A hozzászóláshoz be kell jelentkezni
Miert lenne erdeke? Mint tudjuk, az Ubuntu _nem_ Debian.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Nah hurrá! Örülök, hogy kiderült. :)
- A hozzászóláshoz be kell jelentkezni