日期:2014-05-20  浏览次数:20673 次

java数据访问问题
两台服务器 a(ip 也用a) ,b(ip b) 
a b 是局域网
a上是数据库 但不允许其它外网访问 只能局域网b可以直接访问
所以我在 b 上创建了一个odbc 数据源 指向 a数据库

想问 我在外网怎么访问到 b上创建的数据源??


------解决方案--------------------
是啊,没有人会把服务器上的数据库暴露给外网吧
总的来说,你就是想通过外网访问你内网服务器上的数据库。
这个我觉得应该和网络有关系了,和软件没啥关系,开发一个接口也只能供局域网调用,
因为你的ip地址是局域网的,所以外网也是访问不了的
------解决方案--------------------
探讨
1、在b上编写JDBC-ODBC访问a上的数据库
2、利用java socket,编写代码访问(1)
3、公司的防火墙开放(2)中打开的端口

------解决方案--------------------
开发原理:   服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。   客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。   Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
------解决方案--------------------
探讨
为什么样这样弄了?从外网访问b,b再去访问a,可不可以直接把a的访问权直接授权给外网。

如果业务需要,就上ls说的,通过接口了,在b上运行我们的接口程序,调用数据源给外网服务(webservice、EJB都可以实现)。

------解决方案--------------------
b上装一个端口代理软件 映射到a去就行了