axis中WEBSERVICE请教 呵呵!你的要求好高呀!Java中的Resultset在.NET中没有对应的概念。所以,我建议你最好把Resultset转化为Java和.net都支持的数据类型,如Array等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对了,如果你可以转换为message style的话也可以呀!message style的意思就是直接传送xml对象,好像目前只支持org.w3c.dom.Document对象! 也就是说你如果可以把你的ResultSet转变为标准的xml对象,就可以直接传过去了!但是由于目前的axis只支持Dom,所以会有些限制,你的ResultSet不能太大!(不能几万条记录吧) 那有什么好的解决方法?那个MESSAGE STYLE是什么来的?在哪里可以下载? 不用下载,Axis就支持!详细的例子,你可以看看:axis\samples\message 也可以用RPC,全部把你的数据转换成一个String[]返回,给你一个简单的WebService DEMO:public class MyService{ public String[] sayhello() { String[] sArr = {"one","two"}; return sArr; }}就看你的.net客户端怎么去转换这个String[]类型为自己的的数据类型了,我也很想知道。 呵呵,上面的方法,我前面就说了呀!其实,你一定要做的话,可以参考一下MSDN里面的一个传ResultSet的例子。那里面详细说明了.NET的ResultSet的Xml表现形式。不管你使用什么样的载体(String[]也好,Object[]也好,直接使用xml也好)你都必须在服务端或者Client把它转换成对方能够识别的类型。这还是有一定难度的。加油呀!有什么成果大家分享一下,可好?hehe 我认为这种转换成公共认识的类型,必需要一个统一的标准文档才行,是不是WSDL文档呀???比如现在的情况是Web Service是JAVA的,它部署了,生成一个WSDL文档,而.net客户端调用这个Web Service时,完成不想知道是什么语言写的,它只参考这个统一标准的WSDL文件,看它上面写的endpoint在哪,返回的数据类型是什么,它只要知道自己的什么数据类型和这个WSDL文件定义的数据类型匹配就行了,这样岂不是问题都解决了。我没有实践过,只是这样想的,不知道对不对。 对!同意pstone2002(一只特立独行的猪) 我现在发布一个WSDL文件,看谁马上做一个.net客户端,根据我这个文件的描述来访问我的WEB SERVICE,在线等待<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions targetNamespace="http://218.97.169.38/services/MyService" xmlns:impl="http://218.97.169.38/services/MyService-impl" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:intf="http://218.97.169.38/services/MyService" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">- <types>- <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://218.97.169.38/services/MyService">- <complexType name="ArrayOf_xsd_string">- <complexContent>- <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]" /> </restriction> </complexContent> </complexType> <element name="ArrayOf_xsd_string" nillable="true" type="intf:ArrayOf_xsd_string" /> </schema> </types>- <wsdl:message name="sayhelloResponse"> <wsdl:part name="return" type="intf:ArrayOf_xsd_string" /> </wsdl:message> <wsdl:message name="sayhelloRequest" /> - <wsdl:portType name="MyService">- <wsdl:operation name="sayhello"> <wsdl:input message="intf:sayhelloRequest" /> <wsdl:output message="intf:sayhelloResponse" /> </wsdl:operation> </wsdl:portType>- <wsdl:binding name="MyServiceSoapBinding" type="intf:MyService"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> - <wsdl:operation name="sayhello"> <wsdlsoap:operation soapAction="" /> - <wsdl:input> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://218.97.169.38/services/MyService" /> </wsdl:input>- <wsdl:output> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://218.97.169.38/services/MyService" /> </wsdl:output> </wsdl:operation> </wsdl:binding>- <wsdl:service name="MyServiceService">- <wsdl:port name="MyService" binding="intf:MyServiceSoapBinding"> <wsdlsoap:address location="http://218.97.169.38/services/MyService" /> </wsdl:port> </wsdl:service> </wsdl:definitions> HEHE ,楼上的,只要用WSDL工具一搞,就可以在。NET的客户端生成代理类的拉,问题是我现在连JAVA端生成的RESULTSET也没搞出来。 唉~~~~~~ 我感觉大家目前对WebService的了解都仅限于基本概念和使用老外的工具这个层面上呀!不知道,有没有人写过Soap引擎或者Wsdl引擎呀! 不知道楼上所指的WSDL引擎是指怎么样的?解析还是需要生成Web Service Proxy?还是自动生成WSDL? Wsdl Engine就是分析Wsdl文件的程序。有点类似Wsdl4j,但是我这里说的是动态的,不是Wsdl4j这样的静态的。 有呀!Axis自带的例子,都很不错! To mdot() :如果你要直接序列化ResultSet,难度比较大,我建议你把ResultSet转化成HashMap或者数组试试! 例子就没有了,我可以给你说说我的思路:你在服务端写一个方法输入参数是ResultSet的对象,在这个函数里利用java.sql.*包里面的强大功能将结果一条一条取出,并且format为一个个的字符串,最后组成字符串数组,输出。你提供WebService的那个方法,就收来自.NET客户端的SQL参数,然后组成SQL语句,并且运行得到ResultSet作为参数传入上前面的方法,返回字符给.NET的客户端。 是不是这样public ResultSet aa(String sql){.....查询数据库 return rs(rs为RESULTSET)}public String bb(ResultSet rs)whilr (rs.next())String bb="";bb=.....将rs中字段组成字符串之后返回bb给。NET?那String 如果很长的话,会不会超界呢? 呵呵!只要的内存够大,String就不会超界。 下面是一个WEB SERVICE的JAVA客户端的例子,各位只要把它拷备后编译(要用AXIS包)后运行,就应该可以看到从远程服务器上返回的结果,你会惊讶分布式计算的简单,这里是一个加法函数,会返回3。如果要查看WSDL,请访问:http://218.97.169.38/services/MyService?wsdlimport java.util.Vector;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import javax.xml.rpc.namespace.QName;import org.apache.axis.encoding.XMLType; public class TestClient {public static void main(String [] args) { try { String endpoint = "http://218.97.169.38/services/MyService"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); Float i = new Float(1); Float j = new Float(2); call.setOperationName( "add" ); call.addParameter("i",org.apache.axis.encoding.XMLType.XSD_FLOAT,javax.xml.rpc.ParameterMode.PARAM_MODE_IN); call.addParameter("j",org.apache.axis.encoding.XMLType.XSD_FLOAT,javax.xml.rpc.ParameterMode.PARAM_MODE_IN); call.setReturnType( XMLType.XSD_FLOAT); Float ret = (Float)call.invoke( new Object[] {i,j} ); System.out.println("Got result : " + ret); } catch (Exception e) { System.err.println(e.toString()); }}}请试一试吧! 这里面有两个问题:1、ResultSet本身是不支持序列化的,这是因为ResultSet往往是与数据源绑定的。为了便于分布应用和ResultSet的存储,SUN发布了rowset包,其中的CachedRowSet就是对ResultSet的序列化实现类。使用起来极其方便和简单,rowset现在版本是rowset1.0ea4,发布包带有示例。2、你的应用跨跃了两种语言,虽然都是web services,但两种语言是不能互通对象的。我所能想到的最好办法是用xml来描述你的对象特征,幸运的是你要传递的对象恰恰是二维结果集对象,把结果集转化成xml这个技术已经有好多成熟技术在用了。如Oracle的XML SQL Utility等。 其实,方法肯定有的,上面说的都可以。问题是程序员要做多少工作。axis对于这种复杂类型根本无能为力,它只能提供一个优良框架,你还是必须用大量的代码来自己写序列化和反序列化的方法。(当然,这里没有反序列化,因为.NET Client传过来的String)。我觉得这种情况下就不适合使用WebService,显而易见,速度肯定慢,传输量也超大。我觉得CORBA跟加合适。不要太迷信WebService,它目前还处在一个初级阶段,只能支持一些简单类型。 什么序列化的工作都不要做,AXIS都帮你做了。 再给你一个DEMO吧,这个web service虽然是从EJB里取的数据,但原理和结果集是一样的,最后用DOM把这些数据转换成XML走SOAP过去,可以参考一下。---------------------------------------------------------------------------------import org.w3c.dom.Element ;import org.apache.axis.MessageContext ;import org.apache.axis.Message ;import org.apache.axis.SOAPPart;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import org.w3c.dom.Document;import tradesources.emp.bannersystem.*;import java.util.Vector;import java.util.Collection;import java.util.Iterator;public class MessageService { public Element[] echoElements(MessageContext msgC, Vector elems) { try { Message m = msgC.getCurrentMessage(); SOAPPart sp = m.getSOAPPart(); sp.writeTo(System.out); }catch(Exception e){ System.out.println(e); } Element[] result = new Element[1]; result[0] = getEjbData(); return( result ); /* Element[] result = new Element[elems.size()]; for ( int i = 0 ; i < elems.size() ; i++ ) result[i] = (Element) elems.get(i); return( result ); */ } public Element getEjbData() { try { java.util.Properties h = new java.util.Properties(); h.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"jrun.naming.JRunContextFactory"); h.put(javax.naming.Context.PROVIDER_URL, "localhost:2909"); javax.naming.InitialContext ctx = new javax.naming.InitialContext(h); Object obj = ctx.lookup("BannerSystemSession"); BannerSystemSessionHome home = (BannerSystemSessionHome)javax.rmi.PortableRemoteObject.narrow(obj, BannerSystemSessionHome.class); BannerSystemSession bannerSystemSession = home.create(); //find Collection String keyword = "1"; int num = bannerSystemSession.findBannerInfo("STATUS='1'", "KEYWORD", keyword, null, null, null); System.out.println(num); String s = bannerSystemSession.getConditionStr(1, "STATUS='1'", "KEYWORD", keyword, null, null, null, 0, num, "ID"); System.out.println(s); Collection c= bannerSystemSession.findBannerInfo("STATUS='1'", "KEYWORD", keyword, null, null, null, 0, num, "ID"); System.out.println("isNull?"+c.isEmpty()); Iterator iterator = c.iterator(); BannerSystemValue bv = null; //XML root element "ejbdata" DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.newDocument(); Element ejbdata = doc.createElement("ejbdata"); while(iterator.hasNext()) { //每个bannerInfo用来组装每个BannerSystemValue Element bannerInfo = doc.createElement("bannerInfo"); bv = (BannerSystemValue)iterator.next(); Element id = doc.createElement("id"); id.appendChild(doc.createTextNode(bv.id)); bannerInfo.appendChild(id);//添加id Element impressions = doc.createElement("impressions"); impressions.appendChild(doc.createTextNode(bv.impressions)); bannerInfo.appendChild(impressions);//添加impressions Element name = doc.createElement("name"); name.appendChild(doc.createTextNode(bv.name)); bannerInfo.appendChild(name);//添加name Element linkedUrl = doc.createElement("linkedUrl"); linkedUrl.appendChild(doc.createTextNode(bv.linkedUrl)); bannerInfo.appendChild(linkedUrl);//添加linkedUrl Element uri = doc.createElement("uri"); uri.appendChild(doc.createTextNode(bv.uri)); bannerInfo.appendChild(uri);//添加uri Element altText = doc.createElement("altText"); altText.appendChild(doc.createTextNode(bv.altText)); bannerInfo.appendChild(altText);//添加altText Element dimension = doc.createElement("dimension"); dimension.appendChild(doc.createTextNode(bv.dimension)); bannerInfo.appendChild(dimension);//添加dimension Element fileFormat = doc.createElement("fileFormat"); fileFormat.appendChild(doc.createTextNode(bv.fileFormat)); bannerInfo.appendChild(fileFormat);//添加fileFormat Element ekeyword = doc.createElement("keyword"); ekeyword.appendChild(doc.createTextNode(bv.keyword)); bannerInfo.appendChild(ekeyword);//添加keyword Element dateStart = doc.createElement("dateStart"); dateStart.appendChild(doc.createTextNode(bv.dateStart)); bannerInfo.appendChild(dateStart);//添加dateStart Element dateEnd = doc.createElement("dateEnd"); dateEnd.appendChild(doc.createTextNode(bv.dateEnd)); bannerInfo.appendChild(dateEnd);//添加dateEnd Element dataCreate = doc.createElement("dataCreate"); dataCreate.appendChild(doc.createTextNode(bv.dataCreate)); bannerInfo.appendChild(dataCreate);//添加dataCreate Element dateUpdate = doc.createElement("dateUpdate"); dateUpdate.appendChild(doc.createTextNode(bv.dateUpdate)); bannerInfo.appendChild(dateUpdate);//添加dateUpdate Element updateBy = doc.createElement("updateBy"); updateBy.appendChild(doc.createTextNode(bv.updateBy)); bannerInfo.appendChild(updateBy);//添加updateBy Element status = doc.createElement("status"); status.appendChild(doc.createTextNode(bv.status)); bannerInfo.appendChild(status);//添加status ejbdata.appendChild(bannerInfo); } return ejbdata; }catch(Exception e){ System.out.println(e); return null; } } /* public Message echoElements(MessageContext msgC,Vector elems) { Message m = msgC.getCurrentMessage(); return m; } */} javaEE开发为什么要用到DTO层 struts、hibernate 如何用正则表达式来求一个串的长度 quartz问题请教 急急 关于搜索引擎 排行版 myeclipse+weblogic+ejb的开发 用户要求这样的并发量,JBOSS能够满足需要吗?高分求救 iis+tomcat5出现下面的错误为什么?? 关于底层的bean访问url的问题 applet 中用的包应该放在客户端的什么地方? jdom用法大收集,各位踊跃参加! 怎么设置包含javax.servlet.http.*的包和 org.apache.struts.*的包.
{
public String[] sayhello()
{
String[] sArr = {"one","two"};
return sArr;
}
}
就看你的.net客户端怎么去转换这个String[]类型为自己的的数据类型了,我也很想知道。
其实,你一定要做的话,可以参考一下MSDN里面的一个传ResultSet的例子。那里面详细说明了.NET的ResultSet的Xml表现形式。不管你使用什么样的载体(String[]也好,Object[]也好,直接使用xml也好)你都必须在服务端或者Client把它转换成对方能够识别的类型。这还是有一定难度的。加油呀!有什么成果大家分享一下,可好?hehe
比如现在的情况是Web Service是JAVA的,它部署了,生成一个WSDL文档,而.net客户端调用这个Web Service时,完成不想知道是什么语言写的,它只参考这个统一标准的WSDL文件,看它上面写的endpoint在哪,返回的数据类型是什么,它只要知道自己的什么数据类型和这个WSDL文件定义的数据类型匹配就行了,这样岂不是问题都解决了。我没有实践过,只是这样想的,不知道对不对。
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://218.97.169.38/services/MyService" xmlns:impl="http://218.97.169.38/services/MyService-impl" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:intf="http://218.97.169.38/services/MyService" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
- <types>
- <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://218.97.169.38/services/MyService">
- <complexType name="ArrayOf_xsd_string">
- <complexContent>
- <restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]" />
</restriction>
</complexContent>
</complexType>
<element name="ArrayOf_xsd_string" nillable="true" type="intf:ArrayOf_xsd_string" />
</schema>
</types>
- <wsdl:message name="sayhelloResponse">
<wsdl:part name="return" type="intf:ArrayOf_xsd_string" />
</wsdl:message>
<wsdl:message name="sayhelloRequest" />
- <wsdl:portType name="MyService">
- <wsdl:operation name="sayhello">
<wsdl:input message="intf:sayhelloRequest" />
<wsdl:output message="intf:sayhelloResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="MyServiceSoapBinding" type="intf:MyService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="sayhello">
<wsdlsoap:operation soapAction="" />
- <wsdl:input>
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://218.97.169.38/services/MyService" />
</wsdl:input>
- <wsdl:output>
<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://218.97.169.38/services/MyService" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="MyServiceService">
- <wsdl:port name="MyService" binding="intf:MyServiceSoapBinding">
<wsdlsoap:address location="http://218.97.169.38/services/MyService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
问题是我现在连JAVA端生成的RESULTSET也没搞出来。
我感觉大家目前对WebService的了解都仅限于基本概念和使用老外的工具这个层面上呀!
不知道,有没有人写过Soap引擎或者Wsdl引擎呀!
解析还是需要生成Web Service Proxy?
还是自动生成WSDL?
如果你要直接序列化ResultSet,难度比较大,我建议你把ResultSet转化成HashMap或者数组试试!
{
.....查询数据库
return rs(rs为RESULTSET)}public String bb(ResultSet rs)
whilr (rs.next())
String bb="";
bb=.....将rs中字段组成字符串之后返回bb给。NET?那String 如果很长的话,会不会超界呢?
import java.util.Vector;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.rpc.namespace.QName;
import org.apache.axis.encoding.XMLType;
public class TestClient {
public static void main(String [] args)
{
try
{
String endpoint = "http://218.97.169.38/services/MyService";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
Float i = new Float(1);
Float j = new Float(2);
call.setOperationName( "add" );
call.addParameter("i",org.apache.axis.encoding.XMLType.XSD_FLOAT,javax.xml.rpc.ParameterMode.PARAM_MODE_IN);
call.addParameter("j",org.apache.axis.encoding.XMLType.XSD_FLOAT,javax.xml.rpc.ParameterMode.PARAM_MODE_IN);
call.setReturnType( XMLType.XSD_FLOAT);
Float ret = (Float)call.invoke( new Object[] {i,j} );
System.out.println("Got result : " + ret);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
请试一试吧!
1、ResultSet本身是不支持序列化的,这是因为ResultSet往往是与数据源绑定的。为了便于分布应用和ResultSet的存储,SUN发布了rowset包,其中的CachedRowSet就是对ResultSet的序列化实现类。使用起来极其方便和简单,rowset现在版本是rowset1.0ea4,发布包带有示例。
2、你的应用跨跃了两种语言,虽然都是web services,但两种语言是不能互通对象的。我所能想到的最好办法是用xml来描述你的对象特征,幸运的是你要传递的对象恰恰是二维结果集对象,把结果集转化成xml这个技术已经有好多成熟技术在用了。如Oracle的XML SQL Utility等。
---------------------------------------------------------------------------------
import org.w3c.dom.Element ;
import org.apache.axis.MessageContext ;
import org.apache.axis.Message ;
import org.apache.axis.SOAPPart;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;import tradesources.emp.bannersystem.*;
import java.util.Vector;
import java.util.Collection;
import java.util.Iterator;public class MessageService {
public Element[] echoElements(MessageContext msgC, Vector elems) {
try
{
Message m = msgC.getCurrentMessage();
SOAPPart sp = m.getSOAPPart();
sp.writeTo(System.out);
}catch(Exception e){
System.out.println(e);
}
Element[] result = new Element[1];
result[0] = getEjbData();
return( result );
/*
Element[] result = new Element[elems.size()]; for ( int i = 0 ; i < elems.size() ; i++ )
result[i] = (Element) elems.get(i);
return( result );
*/
}
public Element getEjbData()
{
try
{
java.util.Properties h = new java.util.Properties();
h.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"jrun.naming.JRunContextFactory");
h.put(javax.naming.Context.PROVIDER_URL, "localhost:2909");
javax.naming.InitialContext ctx = new javax.naming.InitialContext(h);
Object obj = ctx.lookup("BannerSystemSession");
BannerSystemSessionHome home = (BannerSystemSessionHome)javax.rmi.PortableRemoteObject.narrow(obj, BannerSystemSessionHome.class);
BannerSystemSession bannerSystemSession = home.create();
//find Collection
String keyword = "1";
int num = bannerSystemSession.findBannerInfo("STATUS='1'", "KEYWORD", keyword, null, null, null);
System.out.println(num); String s = bannerSystemSession.getConditionStr(1, "STATUS='1'", "KEYWORD", keyword, null, null, null, 0, num, "ID");
System.out.println(s);
Collection c= bannerSystemSession.findBannerInfo("STATUS='1'", "KEYWORD", keyword, null, null, null, 0, num, "ID");
System.out.println("isNull?"+c.isEmpty());
Iterator iterator = c.iterator();
BannerSystemValue bv = null;
//XML root element "ejbdata"
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element ejbdata = doc.createElement("ejbdata");
while(iterator.hasNext())
{
//每个bannerInfo用来组装每个BannerSystemValue
Element bannerInfo = doc.createElement("bannerInfo");
bv = (BannerSystemValue)iterator.next();
Element id = doc.createElement("id");
id.appendChild(doc.createTextNode(bv.id));
bannerInfo.appendChild(id);//添加id
Element impressions = doc.createElement("impressions");
impressions.appendChild(doc.createTextNode(bv.impressions));
bannerInfo.appendChild(impressions);//添加impressions
Element name = doc.createElement("name");
name.appendChild(doc.createTextNode(bv.name));
bannerInfo.appendChild(name);//添加name
Element linkedUrl = doc.createElement("linkedUrl");
linkedUrl.appendChild(doc.createTextNode(bv.linkedUrl));
bannerInfo.appendChild(linkedUrl);//添加linkedUrl
Element uri = doc.createElement("uri");
uri.appendChild(doc.createTextNode(bv.uri));
bannerInfo.appendChild(uri);//添加uri
Element altText = doc.createElement("altText");
altText.appendChild(doc.createTextNode(bv.altText));
bannerInfo.appendChild(altText);//添加altText
Element dimension = doc.createElement("dimension");
dimension.appendChild(doc.createTextNode(bv.dimension));
bannerInfo.appendChild(dimension);//添加dimension
Element fileFormat = doc.createElement("fileFormat");
fileFormat.appendChild(doc.createTextNode(bv.fileFormat));
bannerInfo.appendChild(fileFormat);//添加fileFormat
Element ekeyword = doc.createElement("keyword");
ekeyword.appendChild(doc.createTextNode(bv.keyword));
bannerInfo.appendChild(ekeyword);//添加keyword
Element dateStart = doc.createElement("dateStart");
dateStart.appendChild(doc.createTextNode(bv.dateStart));
bannerInfo.appendChild(dateStart);//添加dateStart
Element dateEnd = doc.createElement("dateEnd");
dateEnd.appendChild(doc.createTextNode(bv.dateEnd));
bannerInfo.appendChild(dateEnd);//添加dateEnd
Element dataCreate = doc.createElement("dataCreate");
dataCreate.appendChild(doc.createTextNode(bv.dataCreate));
bannerInfo.appendChild(dataCreate);//添加dataCreate
Element dateUpdate = doc.createElement("dateUpdate");
dateUpdate.appendChild(doc.createTextNode(bv.dateUpdate));
bannerInfo.appendChild(dateUpdate);//添加dateUpdate
Element updateBy = doc.createElement("updateBy");
updateBy.appendChild(doc.createTextNode(bv.updateBy));
bannerInfo.appendChild(updateBy);//添加updateBy
Element status = doc.createElement("status");
status.appendChild(doc.createTextNode(bv.status));
bannerInfo.appendChild(status);//添加status
ejbdata.appendChild(bannerInfo);
}
return ejbdata;
}catch(Exception e){
System.out.println(e);
return null;
}
}
/*
public Message echoElements(MessageContext msgC,Vector elems)
{
Message m = msgC.getCurrentMessage();
return m;
}
*/
}