我使用了线程,将web services里函数直接做成java小程序调用是可以的。
但是调用web services不行。
线程:
class ThreadClass extends Thread
{
String ThreadIPStr;
String ThreadISBNString;
String Threadlanguage;
String Resultstr="";
String Strtimes=null;
public ThreadClass(String IPStr,String ISBNString,String language)
{
ThreadIPStr = IPStr;
ThreadISBNString=ISBNString;
Threadlanguage=language;
}
protected String CombinationXml(String Strip, String ISBNStr,String language)
{
String XMLISBNStr = "";
long beginTime = System.currentTimeMillis();
try {
Integer time=new Integer(1000);
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(Strip));
call.setOperationName("GetisoresXML");
call.setTimeout(time);
XMLISBNStr = (String) call.invoke(new Object[] {ISBNStr,language,"1"});
}
catch (Exception exp) {
XMLISBNStr= "";
}
if(!XMLISBNStr.equals(""))
{
long endTime = System.currentTimeMillis();
long tt=endTime - beginTime;
float differeceDay =(float)(tt)/(1000);
Strtimes=differeceDay+ "";
}
else
{
Strtimes="";
}
return XMLISBNStr;
}
public void run()
{
Resultstr=CombinationXml(ThreadIPStr, ThreadISBNString, Threadlanguage);
}
public String GetResult() {
return Resultstr;
}
public String GetStrtimes() {
return Strtimes;
}}
调用线程的地方
ThreadClass[] thread=new ThreadClass[Recount];
................
try {
cons = LightDishCenterMain.getConnection();
stms = cons.createStatement();
String SQL = "select SchoolIP,SchoolPort from timerreap ";
results = stms.executeQuery(SQL);
while (results.next()) {
IPStr = results.getString("SchoolIP").trim();
PortStr = results.getString("SchoolPort").trim();
if ((NumIP != Trans(IPStr))&& (Trans(CenterIP) != Trans(IPStr)))
{
IPStr = "http://" + IPStr + ":"+ PortStr+ "/Poservice/LightDishCenterMain.jws";
thread[k]=new ThreadClass(IPStr, ISBNString,language);
thread[k].start();
k++;
}
}
try
{
for (int t=0; t<k; t++)
{
thread[t].join();
if(i==1)
{
strs[t+1] = thread[t].GetResult();
timeStrs[t+1] =thread[t].GetStrtimes();
}
else
{ strs[t] = thread[t].GetResult();
timeStrs[t] =thread[t].GetStrtimes();
}
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
finally {
Thread.currentThread().interrupt();
}
XMLStrISBN = SearchResult(strs);
return XMLStrISBN;
.............
但是调用web services不行。
线程:
class ThreadClass extends Thread
{
String ThreadIPStr;
String ThreadISBNString;
String Threadlanguage;
String Resultstr="";
String Strtimes=null;
public ThreadClass(String IPStr,String ISBNString,String language)
{
ThreadIPStr = IPStr;
ThreadISBNString=ISBNString;
Threadlanguage=language;
}
protected String CombinationXml(String Strip, String ISBNStr,String language)
{
String XMLISBNStr = "";
long beginTime = System.currentTimeMillis();
try {
Integer time=new Integer(1000);
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(Strip));
call.setOperationName("GetisoresXML");
call.setTimeout(time);
XMLISBNStr = (String) call.invoke(new Object[] {ISBNStr,language,"1"});
}
catch (Exception exp) {
XMLISBNStr= "";
}
if(!XMLISBNStr.equals(""))
{
long endTime = System.currentTimeMillis();
long tt=endTime - beginTime;
float differeceDay =(float)(tt)/(1000);
Strtimes=differeceDay+ "";
}
else
{
Strtimes="";
}
return XMLISBNStr;
}
public void run()
{
Resultstr=CombinationXml(ThreadIPStr, ThreadISBNString, Threadlanguage);
}
public String GetResult() {
return Resultstr;
}
public String GetStrtimes() {
return Strtimes;
}}
调用线程的地方
ThreadClass[] thread=new ThreadClass[Recount];
................
try {
cons = LightDishCenterMain.getConnection();
stms = cons.createStatement();
String SQL = "select SchoolIP,SchoolPort from timerreap ";
results = stms.executeQuery(SQL);
while (results.next()) {
IPStr = results.getString("SchoolIP").trim();
PortStr = results.getString("SchoolPort").trim();
if ((NumIP != Trans(IPStr))&& (Trans(CenterIP) != Trans(IPStr)))
{
IPStr = "http://" + IPStr + ":"+ PortStr+ "/Poservice/LightDishCenterMain.jws";
thread[k]=new ThreadClass(IPStr, ISBNString,language);
thread[k].start();
k++;
}
}
try
{
for (int t=0; t<k; t++)
{
thread[t].join();
if(i==1)
{
strs[t+1] = thread[t].GetResult();
timeStrs[t+1] =thread[t].GetStrtimes();
}
else
{ strs[t] = thread[t].GetResult();
timeStrs[t] =thread[t].GetStrtimes();
}
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
finally {
Thread.currentThread().interrupt();
}
XMLStrISBN = SearchResult(strs);
return XMLStrISBN;
.............
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货