ResultSet这种特殊类型不能作为结果返回
WebServive是能返回简单类型 整型 字符型 数组型
WebServive是能返回简单类型 整型 字符型 数组型
解决方案 »
- 实现统计人数
- ERROR: Access denied for user 'root'@'localhost' (using password: YES)
- spring事务
- 新手问个Spring的简单问题
- resin下使用axis的问题
- struts hibernate spring 类图怎么画
- hibernate外部一个事务,两个方法里对同一个表更新字段就会报错identifier value was already associated with the session: 0050006870
- 还是那个helloworld
- 在dos模式下怎样建立一个cloudscape数据库?
- IE6对XML的支持比较好,但不支持JAVA……
- javaapplication j2ee 和 J2EE程序 的区别是什么?
- 高手请进!!关于Hibernate加载blob字段的问题!在线等!谢谢!
xsd:base64Binary byte[]
xsd:boolean boolean
xsd:byte byte
xsd:dateTime java.util.Calendar
xsd:decimal java.math.BigDecimal
xsd:double double
xsd:float float
xsd:hexBinary byte[]
xsd:int int
xsd:integer java.math.BigInteger
xsd:long long
xsd:QName javax.xml.namespace.QName
xsd:short short
xsd:string java.lang.String
只有这么多标准类型可以被对应
参考这里
http://ws.apache.org/axis/java/user-guide.html#XMLJavaDataMappingInAxis如果你一定要用非标准类型,那么你需要自定义它,并且把它作为一个命名空间发布出去
如果复杂,那么就把它写为XML文件 然后把XML文件当作WebService的附件
部分代码如下:
package dtcs.webservice;
import java.sql.*;
public class queryserver
{
private dbclass db=null;
private xmlconfig objxml; public queryserver()
{
objxml=new xmlconfig();
db=new dbclass(); if(objxml.readXmlConfig())
{ db.setClassname(objxml.getClassname()) ;
db.setDsn(objxml.getJdbc());
db.setUserID(objxml.getUseID()) ;
db.setPwd(objxml.getPwd()) ;
db.ReConnect () ;
} } /**
* @todo 登记一个获取短信的用户号码
* @param usercode 用户号码
* @return TRUE:成功 FALSE:失败 */
public boolean Register(String usercode)
{
String strsql;
strsql="select * from usercode where usercode='"+usercode+"' order by usercode"; ResultSet rs=db.QueryRst(strsql);
try
{
if ( rs.next () )
{
strsql = "update usercode set isstop=0 where usercode='" + usercode +
"'" ;
return db.ExcuteSQL ( strsql ) ;
} strsql="insert into usercode(usercode) values('"+usercode+"')";
return db.ExcuteSQL(strsql);
}
catch ( SQLException ex )
{
return false;
}
}
}上面用到其它的类或者包,这时该怎么配置,我已经将编译生成的.class文件copy到...webapps\axis\web-inf\classes下了?
发布服务也失败
D:\tomcat\webapps\axis\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd
执行结果:
Processing file deploy.wsdd
Exception:: java.lang.Exception: FIXMEdeploy.wsdd内容
<deployment xmlns="http://xml.apache.org/Axis/wsdd/" xmlns:java="http://xml.apache.org/Axis/wsdd/providers/java">
<handler name="print" type="java:LogHandler"/>
<service name="queryserver" provider="java:RPC">
<requestFlow>
<handler type="print"/>
</requestFlow>
<parameter name="className" value="dtcs.webservice.queryserver"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
下面是我的环境变量:
JAVA_HOME
C:\j2sdk1.4.2_08AXIS_HOME
%CATALINA_HOME%\webapps\axisAXIS_LIB
%AXIS_HOME%\libAXISCLASSPATH
%AXIS_LIB%\activation.jar;%AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-httpclient-3.0-rc2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\mailapi_1_3_1.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\servlet.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\xercesImpl.jar;%AXIS_LIB%\xmlParserAPIs.jarCATALINA_HOME
C:\Tomcat_5.0CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;;%CATALINA_HOME%\common\lib\servlet.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-httpclient-3.0-rc2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\mailapi_1_3_1.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\servlet.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\xercesImpl.jar;%AXIS_LIB%\xmlParserAPIs.jarPath
%JAVA_HOME%\bin;
直接在IE中输入http://localhost:8080/bob.webservice/services 显示
And now... Some Services
AdminService (wsdl)
AdminService
Version (wsdl)
getVersion
queryserver (wsdl)
Register
UnRegister
测试http://localhost:8080/bob.webservice/services/queryserver?wsdl也有xml信息返回,只是在用客户端调用的时候老返回注册失败,有什么办法可以跟踪调试下???
贴上queryserver的注册接口和client的调用方法,帮我看下有没什么问题
public boolean RQ_Register(String usercode)
{ try
{
call = ( Call ) service.createCall () ;
try
{
call.setTargetEndpointAddress ( new java.net.URL ( endpointURL ) ) ;
call.setOperationName( new QName("queryserver", "Register") );//设置操作的名称。
Object paras[] = new Object[]{usercode};
call.setReturnType(XMLType.XSD_BOOLEAN) ;
try
{
String s = ( String ) call.invoke ( paras ) ;
return Boolean.getBoolean(s);
}
catch ( RemoteException ex3 )
{
return false;
}
}
catch ( MalformedURLException ex1 )
{
return false;
} }
catch ( ServiceException ex )
{
return false;
} }服务器端的代码上面的一段代码中已经有,这里就不重复贴了
其中客户端请求的endpointURL 为
http://localhost:8080/bob.webservice/services/queryserver?wsdl