⑴ java的webservice如何连接本地数据库.
同求,前辈。我也是现在能写web service,但是把连接数据库的类和jar文件添加进去之后就出问题了,好像不能简单的调用。求前辈帮帮忙,谢谢了。[email protected]
⑵ 关于WebServiceWebService怎么连接数据库
我的想法是这样的:首先建立一个showDatabase.java ,用于连接数据库,其源文件如下:
package stuTest;
import java.sql.*;
public class showDatabase {
public Connection getConnection()
{
Connection conn;
try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn=DriverManager.getConnection("jdbc:","root","a123456");
//conn.setAutoCommit(false);
}
catch(Exception e){throw new RuntimeException(e);}
return conn;
}
public void closeCon(Connection conn)
{
try{
if(conn!=null) conn.close();
}
catch(SQLException e)
{
throw new RuntimeException(e);
}
}
public void rollback(Connection conn)
{
try
{
conn.rollback();
}
catch(SQLException e)
{
throw new RuntimeException(e);
}
}
}
转载,仅供参考。
⑶ 用Server-u怎样把数据从外网通过网闸转到内网
作者:蔡老板
链接:https://www.hu.com/question/26954479/answer/171177491
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
大概有三种方式:
1、使用网闸的映射功能:即在网闸中配置指定ip段的外网机器,只能访问内网指定ip、端口的机器所提供的指定服务。
评价:此种方式较为方便,但不是最安全的。
2、文件同步功能:此种方式需要一台外网服务器和一台内网服务器,在内外网服务器上分别部署webservice服务程序,并在内外网机器上分别建立共享文件夹,供网闸进行文件的同步(从内网到外网,从外网到内网)。
实现思路大致是:
(1)、外网服务器部署的webservice程序供外网用户访问,一旦接受请求,则将请求生成xml或者其他格式文件,放到外网服务器的共享请求目录。
(2)、通过在网闸中配置内外网的共享请求目录与共享响应目录,网闸会定时(最低一分钟)扫描内外网服务器的指定的若干目录,看有无新增文件,有则同步过去。
(3)、内网服务器webservice程序内部定时扫描指定请求目录,网闸将外网服务器的请求文件同步到内网服务器的请求目录后,内网程序检测到请求文件则立即触发调用本地或者内网其他机器的webservice服务,并将结果生成响应文件放到响应目录。
(4)、网闸检测响应目录的新增文件,将文件同步到外网服务器的响应目录,外网服务器程序线程接受到请求后, 一直等待指定时间,扫描响应目录下有无响应文件产生(请求文件与响应文件采取同名方式,以便区分),读取到响应文件后,返回给外网用户调用者。
评价:此种方式虽然较上种方式安全,但网闸扫描频率最快一分钟扫描一次的限制便将该种方式kill了(让客户等待至少2分钟是完全不可行的)。
然而对于新的网闸内外网数据交换平台可以支持1s扫描一次,因此对于需要交换图片、视频等应用,则可考虑升级旧网闸数据交换系统;此时采取文件同步是比较理想的。
3、数据库同步方式:
实现思路:
(1)、需要两台服务器,内网服务器与外网服务器,两台机器同时部署两个程序(程序不完全相同),两台服务器都要安装数据库,并建立相同的表结构(指需要通过网闸同步的表的结构相同,本例中需要响应表和请求表)
(2)、在网闸中配置数据库同步,需要两个库的连接方式,及需要同步那些表;注意,同步的表字段不可有clob或者blob等类型(网闸不能同步,猜测是大字段类型不能导出的原因),基本类型最好。
(3)、外网webservice程序接收请求,将请求插入到请求表中,然后线程休眠指定时间后读取响应表中的响应结果。
(4)、网闸将外网数据库的请求表中的插入的数据,即时(可能采用触发器,具体不知,相当于即时)同步到内网数据库的请求表中。
(5)、对内网请求表预先建立行级触发器,当请求表每插入一条数据时,即执行触发器,在触发器中调用内网的webservice程序。
(6)、可在触发器中插入结果到响应表中,若是业务逻辑复杂,则可在webservice程序内部将结果插入到响应表中。
(7)、网闸将响应表中数据即时同步到外网服务器的响应表中。
(8)、(3) 中等待的线程在限定时间内每隔100ms(自己指定)查询响应表,查询到等待的结果则返回给客户。
4、总结:映射方式与数据库同步方式最为靠谱,但若是对安全性要求非常高,则建议使用数据库同步方式,否则使用映射方式最为便捷。
⑷ 多个独立系统数据交互,数据库事务同步问题
使用API接口或者使用scoket 发送消息,另一方接受消息,如果是WEB的可以使异步webservice做数据同步的接口。系统1删除数据D1的时候,调用系统2的一个webservice,告诉他的D1被删除了,
⑸ 两个系统所用的数据库不同,怎么样实现数据导入导出
接口都没有,根本无法数据对接的。
一般接口有4种,
1,通过webservice数据交互对接,这样数据是实时同步的,且安全;
2,通过中间数据表,这样数据的同步性稍差;
3,通过写文件的形式,这种方式现在信息系统基本不用,像那种点菜宝之类的小设备,会使用此方法;
4,一个系统直接操作另一个系统的数据库,此方法只用来做数据查询还可以,不建议增删改操作;
⑹ .net中webservice是同步调用还是异步调用
WebService
其实异步调用WebService是不需要在WebService中做任何操作的,只是普通的WebService就可以了,下面是我写的一个简单的WebService返回SqlServer2000中NorthWind数据库中所有员工的信息
[WebMethod]
public DLL.EmployeesDataTable getEmployee()
{
DLL.EmployeesDataTable result = new DLL.EmployeesDataTable();
DLLTableAdapters.EmployeesTableAdapter eta = new WebServiceAsyn.DLLTableAdapters.EmployeesTableAdapter();
eta.FillEmployee(result);
return result;
} 这里我需要声明一下,返回的 DLL.EmployeesDataTable类型是我用DataSet生成的强类型,或者你可以认为他是DataTable。
如何在Asp.Net里引入WebService呢?首先右键单击解决方案资源管理器中的项目,然后选择添加Web引用(你也可以单击网站菜单选择添加Web引用),在弹出的对话框中填入WebService的地址,并填写Web引用名后点击添加引用按钮就可以了,这时我们就可以在代码视图中根据web引用名来对WebService进行调用了,下面是我的CS代码
//实体化WebService引用
private AsynWebService.Service1 asynSer;
//构造函数初始化WebService引用,并为异步调用WebService设置好了结果处理函数【方法名Completed】(先这么叫吧,我也不知道怎么叫)
public _Default()
{
asynSer = new AsynWebService.Service1();
asynSer.HelloWorldCompleted += new AsynWebService.(asynSer_HelloWorldCompleted);
asynSer.getEmployeeCompleted += new AsynWebService.(asynSer_getEmployeeCompleted);
}
protected void Button1_Click(object sender, EventArgs e)
{
//开始异步调用HelloWorld;
asynSer.HelloWorldAsync();
}
protected void asynSer_HelloWorldCompleted(object sender, AsynWebService.HelloWorldCompletedEventArgs e)
{
this.Label1.Text = e.Result.ToString();
}
protected void asynSer_getEmployeeCompleted(object sender, AsynWebService.getEmployeeCompletedEventArgs e)
{
this.GridView1.DataSource = e.Result;
this.GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
//开始异步调用getEmployee
asynSer.getEmployeeAsync();
} 到这里我们后台代码就写完了,但是我们还要在ASPX页面设置一个允许异步调用的属性 Async="true"这样就可以在这个页面里进行异步调用了!
同步调用的方法和异步调用的方法不一样,异步调用的方法是WebServic的方法名+Async()作为方法名,同步调用的方法就是WebService的方法名。
其实从原理上看不管是Ajax还是Asp.Net或者Flex它们的异步调用都是一样的,下面我们来和Ajax比较一下Ajax中的核心对象--XMLHttpRequest对象一个非常重要的属性就是onreadystatechange,下面是一个基于Ajax的简单的用户名的验证<script language="javascript" type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function requestStart()
{
if(document.getElementById("tbx1").value.length <= 4)
{
alert("用户名的长度要求大于4个字符!");
return false;
}
document.getElementById("sp1").innerText = "Loding";
var url = "default.aspx?userName=" + document.getElementById("tbx1").value;
createXMLHttpRequest();//创建XMLHttpRequest对象
xmlHttp.onreadystatechange = callBack;//为XMLHttpRequest对象指定结果处理函数
xmlHttp.open("GET",url);//打开链接
xmlHttp.send(null);//发送请求
}
//结果处理函数
function callBack()
{
if(xmlHttp.readyState == 4)
{
document.getElementById("sp1").innerText = xmlHttp.responseText;
}
}
</script>