当前位置: 首页 > news >正文

吕梁推广型网站开发wordpress文章无法置顶

吕梁推广型网站开发,wordpress文章无法置顶,山东省聊城建设学校网站,卓企做的网站怎么样ruby和python今天#xff0c;我不得不准备一些示例来说明Web服务是可互操作的。 因此#xff0c;我已经使用Metro使用Java创建了一个简单的Web服务#xff0c;并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中… ruby和python 今天我不得不准备一些示例来说明Web服务是可互操作的。 因此我已经使用Metro使用Java创建了一个简单的Web服务并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中的简单Web服务开始 package com.wordpress.jdevel.ws;import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam;WebService(serviceName Music) public class Music {private static final File FOLDER new File(D:/TEMP/SONGS);WebMethod(operationName listSongs)public Song[] listSongs(WebParam(name artist) String artist) {ListSong songs new ArrayListSong();System.out.println(ARTIST: artist);if (artist ! null) {File folder new File(FOLDER, artist);if (folder.exists() folder.isDirectory()) {File[] listFiles folder.listFiles(new FilenameFilter() {public boolean accept(File dir, String name) {return name.toUpperCase().endsWith(.MP3);}});for (File file : listFiles) {String fileName file.getName();String author file.getParentFile().getName();int size (int) (file.length() / 1048576); //MegabytesSong song new Song(fileName, author, size);songs.add(song);}}}return songs.toArray(new Song[songs.size()]);}WebMethod(operationName listArtists)public String[] listArtists() {File[] folders getFolders(FOLDER);ListString artists new ArrayListString(folders.length);for (File folder : folders) {artists.add(folder.getName());}return artists.toArray(new String[artists.size()]);}private File[] getFolders(File parent) {FileFilter filter new FileFilter() {public boolean accept(File pathname) {return pathname.isDirectory();}};File[] folders parent.listFiles(filter);return folders;}public static void main(String[] args) {Music listFiles new Music();String[] artists listFiles.listArtists();System.out.println(Artists: artists);for (String artist : artists) {Song[] listSongs listFiles.listSongs(artist);for (Song song : listSongs) {System.out.println(song.getArtist() : song.getFileName() : song.getSize() MB);}}} } 还需要一个简单的bean来获取一些更复杂的类型 package com.wordpress.jdevel.ws;import java.io.Serializable;public class Song implements Serializable {String fileName;String artist;int size;public Song() {}public Song(String fileName, String artist, int size) {this.fileName fileName;this.artist artist;this.size size;}public String getArtist() {return artist;}public void setArtist(String artist) {this.artist artist;}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName fileName;}public int getSize() {return size;}public void setSize(int size) {this.size size;} } 它只是在硬编码的FOLDER目录中列出所有子目录并将其视为音乐收藏中的艺术家列表。 然后您可以执行listSongs方法并在artist子文件夹中获取mp3文件的列表。 要使其成为Web服务您要做的就是使用WebServiceserviceName “ Music”注释类并且要公开为Web服务操作的每个方法都必须使用WebMethodoperationName “ listArtists”进行标记。 如果您要在GlassFish上部署它那么应该就这些了但是我已经使用了Tomcat因此还需要3个步骤 1.将Metro 2.0罐子添加到WEB-INF / lib 2.将Metro servlet和侦听器添加到web.xml listenerlistener-classcom.sun.xml.ws.transport.http.servlet.WSServletContextListener/listener-class /listener servletservlet-nameMusic/servlet-nameservlet-classcom.sun.xml.ws.transport.http.servlet.WSServlet/servlet-classload-on-startup1/load-on-startup /servlet servlet-mappingservlet-nameMusic/servlet-nameurl-pattern/Music/url-pattern /servlet-mapping 您可能不应在此处进行任何更改。 只需将其粘贴到web-app节点中的web.xml中即可。 3.使用端点声明将sun-jaxws.xml文件添加到WEB-INF ?xml version1.0 encodingUTF-8? endpoints version2.0 xmlnshttp://java.sun.com/xml/ns/jax-ws/ri/runtimeendpoint implementationcom.wordpress.jdevel.ws.Music nameMusic url-pattern/Music/ /endpoints 实现必须匹配您的WebService类 名称必须与WebService批注中的serviceName匹配 url-pattern必须与您在servlet映射中声明的url-pattern匹配 如果您在NetBeans中创建XML文件那么也不必编辑它们。 现在启动Tomcat并部署您的应用程序。 您应该可以通过类似以下方式访问服务 http// localhost8080 / WSServer /音乐 并看到这样的事情 可以通过以下方式访问WSDL http// localhost8080 / WSServer / Musicwsdl 复杂类型的架构 http// localhost8080 / WSServer / Musicxsd 1 如果您能正常工作则可以从以下客户端开始。 Python客户端 我已经开始搜寻一些不错的python网络服务库并找到了Suds。 我还没有真正使用过这样的东西。 实施WS客户大约花了15分钟。 当然支持复杂类型的课程和上一次我使用Python编写大于5行的内容大约是3年前。 您真的必须尝试一下。 所以这是代码 import sudsclass Client:def __init__(self):self.client suds.client.Client(http://localhost:8080/WSServer/Music?wsdl)def get_artists(self):return self.client.service.listArtists()def get_songs(self, artist):return self.client.service.listSongs(artist)if(__name__ __main__):client Client()artists client.get_artists()for artist in artists:print artistsongs client.get_songs(artist)for song in songs:print \t%s : %s : %d%s % (song.fileName, song.artist, song.size, MB) 而已。 简单明了。 WSDL被解析复杂类型被动态生成。 美丽的东西。 对我来说要实现这样的事情有点困难。 Ruby客户端 使用SOAP4R库。 只需执行 宝石安装soap4r 要获得它真的很喜欢这个工具。首先让我们从代码开始 require soap/rpc/driver require soap/wsdlDriverclass Clientdef initializefactory SOAP::WSDLDriverFactory.new(http://localhost:8080/WSServer/Music?wsdl)driver factory.create_rpc_driverenddef get_songs(artist)songs driver.listSongs(:artist artist)return songsenddef get_artistsartists driver.listArtists(nil)return artistsend enddef print_songs(songs)if songsend endclient Client.new artists client.get_artists artists[return].each{|artist|puts artistsongs client.get_songs(artist)[return];songs.each {|song| puts \t%s : %s : %d%s % [song.fileName, song.artist, song.size, MB]} } 它的功能完全相同。 调用Web服务以获取艺术家列表然后为每个艺术家调用mp3文件。 然后只需将所有内容打印到控制台即可。 我花了相当长的时间才能开始工作。 首先–很难找到任何文档。 其次– SOAP4R在没有一点黑客的情况下不能与ruby 1.9一起工作 http://railsforum.com/viewtopic.php?id41231 下一步–当您不使用WSDL创建驱动程序对象时结果会稍微好一些但是您必须确切地知道拥有什么并想要执行哪些服务。 在这个简单的示例中这不是问题但是如果您需要使其更通用一些……您将会遇到麻烦。 我说“好一点”是什么意思 一代码 driver SOAP::RPC::Driver.new(http://localhost:8080/WSServer/Music, http://ws.jdevel.wordpress.com/); driver.add_method(ARTISTS_METHOD) driver.add_method(SONGS_METHOD, artist) 这样我负责声明要使用的服务的端点和名称空间。 我还需要声明我将要使用的所有操作以及参数“作者”。 有什么不同 当我不使用WSDL时SOAP4R库会从调用服务中提供更好的返回类型。 我可以简单地省略[“ return”]并得到类似使用Python的信息。 我需要在Ruby中知道的是每种复杂类型的外观如何从而使我的实现对Web服务更改更加敏感。 如何知道应该使用哪个键来获取复杂类型的数据 检查WSDL并查找要调用的操作 operation namelistArtistsinput wsam:Actionhttp://ws.jdevel.wordpress.com/Music/listArtistsRequest messagetns:listArtists/output wsam:Actionhttp://ws.jdevel.wordpress.com/Music/listArtistsResponse messagetns:listArtistsResponse/ /operation 接下来在xsd中找到输出复杂类型 xs:complexType namelistArtistsResponsexs:sequencexs:element namereturn typexs:string nillabletrue minOccurs0 maxOccursunbounded//xs:sequence /xs:complexType 您需要的是name属性的值。 无论如何这两种实现看起来都非常不错而且更重要的是它们可以正常工作。 Ruby和Python都有不错的Web服务库可以处理复杂类型和WSDL解析。 参考我们的JCG合作伙伴在“ Development world story”博客上 提供了RubyPython和Java的Web服务 。 相关文章 具有Spring和Maven教程的JAX–WS 用Jackson进行Java JSON处理 Spring 3 RESTful Web服务 jqGridRESTAJAX和Spring MVC集成 翻译自: https://www.javacodegeeks.com/2011/08/web-services-ruby-python-java.htmlruby和python
http://www.pierceye.com/news/94255/

相关文章:

  • js 曲线 网站营销型网站方案书
  • 如何盗取网站软件开发的自学教程
  • 傻瓜建站家庭网络搭建网站
  • 扬中做网站的公司静态网页生成器
  • 襄阳做公司网站的软件公司wordpress网站好做排名吗
  • 电商网站功能介绍太原市做网站公司
  • 网站开发融资计划网站响应式和电脑手机
  • 专做水果的网站天门市规划建设局网站
  • 网站百度地图生成器建设一个网站可以做什么
  • 用阳寿做交易的网站建盏公司简介
  • 机械加工网站哪个好服装设计专业有前途吗
  • 深圳 企业 网站建设哪家好没有域名的网站需要备案吗
  • 深圳返利网站建设扁平化 手机网站首页
  • 郑州核酸点推vip服务网站优化标准
  • 建设银行河南分行网站邢台做网站哪里便宜
  • 网站收录原创文章wordpress新框架vue
  • 中工信融做网站怎么样凡科建站代理平台
  • 网站设计图能用ps做么dedecms 图片网站
  • 自己有服务器怎么做网站wordpress会员卡
  • 网站打不开 ...wordpress 评论表情插件
  • 网站开发框架 Wordpress网站整体设计流程
  • 深圳沙井网站建设网站建设管理工作
  • 网站广告条效果wordpress改关键词
  • 做移动网站首页软截获网站流量怎么做
  • 用dw做网站怎么添加背景图片大连网页制作培训
  • 新网站百度有审核期成都 网站建设培训班
  • 在线购物网站的设计成都网站seo费用
  • 访问国外的网站很慢wordpress 电商主题
  • 免费收录网站推广wordpress打开速度分析
  • 成都网站运营wordpress后台