IsAdminLogin.java调用CanteeAdminLoginService.jws服务中的AdminLogin()方法,AdminLogin()有调用了同文件中的adminLogin()方法。
还有server-config.wsdd文件也有。
*************************************************************************
提供服务的那部分代码(CanteeAdminLoginService 中的)
public boolean adminLogin(String username,String password){
System.out.println("CanteeAdminLoginService.jws中username:" + username);
System.out.println("CanteeAdminLoginService.jws中password:" + password);
boolean flag = false;
ConnDb cd = new ConnDb();
try {
conn = cd.getConn();
ps = conn.prepareStatement("select * from admintable where adminaccount=? and adminpasswd=?");
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
if(rs.next()){
flag = true;
}
System.out.println("Try中 flag in CanteeAdminLoginService :" + flag);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("flag in CanteeAdminLoginService :" + flag);
return flag;
}
public String AdminLogin(String username,String password){
if( adminLogin( username, password)){
return "true";
}else{
return "false";
}
//return "test";
}
*************************************************************************
调用服务的代码(IsAdminLogin.java中的)
public boolean adminLogin(String username,String password){
boolean flag = false;
String login = "";
try{
System.out.println("调用服务之前login:" + login);
String endpoint = "http://localhost:8080/Canteen/CanteeAdminLoginService.jws";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("AdminLogin");
//call.addParameter(username, XMLType.XSD_STRING, ParameterMode.IN);
//call.addParameter(password, XMLType.XSD_STRING, ParameterMode.IN);
//call.setUseSOAPAction(true);
// 填写你要调用的方法名称
login = (String)call.invoke(new Object[] { username,
password });
System.out.println(call.invoke(new Object[] { username,
password }));
System.out.println("服务返回后login:" + login);
System.out.println("username:" + username);
System.out.println("password:" + password);
}catch(Exception e){
e.printStackTrace();
}
if("true".equals(login)){
flag = true;
}
return flag;
}
************************************************************************请哪位大侠帮帮忙?改了一天了,没改出来,55555
还有server-config.wsdd文件也有。
*************************************************************************
提供服务的那部分代码(CanteeAdminLoginService 中的)
public boolean adminLogin(String username,String password){
System.out.println("CanteeAdminLoginService.jws中username:" + username);
System.out.println("CanteeAdminLoginService.jws中password:" + password);
boolean flag = false;
ConnDb cd = new ConnDb();
try {
conn = cd.getConn();
ps = conn.prepareStatement("select * from admintable where adminaccount=? and adminpasswd=?");
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
if(rs.next()){
flag = true;
}
System.out.println("Try中 flag in CanteeAdminLoginService :" + flag);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("flag in CanteeAdminLoginService :" + flag);
return flag;
}
public String AdminLogin(String username,String password){
if( adminLogin( username, password)){
return "true";
}else{
return "false";
}
//return "test";
}
*************************************************************************
调用服务的代码(IsAdminLogin.java中的)
public boolean adminLogin(String username,String password){
boolean flag = false;
String login = "";
try{
System.out.println("调用服务之前login:" + login);
String endpoint = "http://localhost:8080/Canteen/CanteeAdminLoginService.jws";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("AdminLogin");
//call.addParameter(username, XMLType.XSD_STRING, ParameterMode.IN);
//call.addParameter(password, XMLType.XSD_STRING, ParameterMode.IN);
//call.setUseSOAPAction(true);
// 填写你要调用的方法名称
login = (String)call.invoke(new Object[] { username,
password });
System.out.println(call.invoke(new Object[] { username,
password }));
System.out.println("服务返回后login:" + login);
System.out.println("username:" + username);
System.out.println("password:" + password);
}catch(Exception e){
e.printStackTrace();
}
if("true".equals(login)){
flag = true;
}
return flag;
}
************************************************************************请哪位大侠帮帮忙?改了一天了,没改出来,55555
然后使用axis的工具生成客户端,看看是不是客户端代码写错了
password }); 你这个定义的是STRING类型,服务端返回的是BOOLEAN
给你贴段我的:
这是服务端代码:
public selectInfoBean selectInfoResult (String userName,String password,String idnName
,String requestTime,String idnPassword,Integer searchType
,String preDef,String preDefalut)
{
selectInfoBean info = new selectInfoBean();
System.out.print("is ok");
if("fly".equals(userName))
{
info.setAdmcityzh(userName);
info.setAdmcountry(idnName);
} return info;
}
客户端代码如下:
public static void main(String[] args) {
try {
String targetEendPoint = "http://localhost:8080/axis/services/SelectInfoService";
Service services = new Service();
Call call = null ;
//创建Call实例,也是必须的!
call = (Call) services.createCall();
QName qn = new QName("urn:AnalyzeInfoBean", "InfoBean" );
call.registerTypeMapping(OrderBean.class, qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory(selectInfoBean.class, qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(selectInfoBean.class, qn));
call.setTargetEndpointAddress( new java.net.URL(targetEendPoint) );
call.setOperationName( new QName("SelectInfoService", "selectInfoResult") );
//返回String,传入参数字符串
selectInfoBean result = (selectInfoBean) call.invoke(new Object[] { "fly","","dddd","","",1,"","" });
System.out.println(result.getAdmcityzh());
System.out.println("Success...");
System.out.println(result.getAdmcountry());
} catch (Exception ex) {
ex.printStackTrace();
}
}这是打印结果:
fly
Success...
dddd
我上次用weblogic 8.1 发布webservice服务遇到了和你一样的错误