新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Semantic Web(语义Web,语义网或语义万维网, Web 3.0)及相关理论,如:Ontology(本体,本体论), OWL(Web Ontology Langauge,Web本体语言), Description Logic(DL, 描述逻辑),RDFa,Ontology Engineering等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区W3CHINA.ORG讨论区 - Web新技术讨论『 Semantic Web(语义Web)/描述逻辑/本体 』 → 我想做一个简单的拥有三层架构的web service 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4974 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 我想做一个简单的拥有三层架构的web service 举报  打印  推荐  IE收藏夹 
       本主题类别: Description Logics | Web Services    
     lixiaoming 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:78
      积分:409
      门派:XML.ORG.CN
      注册:2008/12/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lixiaoming发送一个短消息 把lixiaoming加入好友 查看lixiaoming的个人资料 搜索lixiaoming在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lixiaoming的博客楼主
    发贴心情 我想做一个简单的拥有三层架构的web service

    各位大侠,请指教,起初刚刚接触了web service想自己做一个简单的例子,我现在已经把,juddi+axis+MyEclipse+Tomcat+Mysql的一个试验平台搭建好了,uddi4j连接juddi也测试成功了。现在我想做一个简单的包括三层架构的web service,   希望各位可以指点指点:
    首先,我做了如下的功夫
    首先在myeclipse中新建了一个web project
    接着:
      这里是个pojo类,名字为Product.java
      public class Product {
      private String pid;
      private String pname;
      private double price;
      private int cnt;
      private String ext;
      
      public int getCnt() {
        return cnt;
      }
      public void setCnt(int cnt) {
        this.cnt = cnt;
      }
      public String getExt() {
        return ext;
      }
      public void setExt(String ext) {
        this.ext = ext;
      }
      public String getPid() {
        return pid;
      }
      public void setPid(String pid) {
        this.pid = pid;
      }
      public String getPname() {
        return pname;
      }
      public void setPname(String pname) {
        this.pname = pname;
      }
      public double getPrice() {
        return price;
      }
      public void setPrice(double price) {
        this.price = price;
      }
    }

    接着我做了一个数据库连接的文件,,名字为:DBAccess.java
    package com.icss.oa.opt;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class DBAccess {
      private static Connection _conn = null;

      public static Connection getConn() {
        try {
          Class.forName("com.mysql.jdbc.Driver");
          _conn = DriverManager.getConnection(
              "jdbc:mysql://127.0.0.1:3306/juddi", "root", "root");
        } catch (Exception e) {
          e.printStackTrace();
        }
        return _conn;
      }

      public static void closeConn(Statement stmt, ResultSet rs, Connection conn) {
        try {
          if (rs != null) {
            rs.close();
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
        try {
          if (stmt != null) {
            stmt.close();
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }
        try {
          if (conn != null) {
            conn.close();
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }
      }

      public static void closeConn() {
        try {
          if (_conn == null || _conn.isClosed()) {
            return;
          } else {
            _conn.close();
          }
        } catch (SQLException e) {
          e.printStackTrace();
        }
      }

      public void execUpdate() {
      }

      public ResultSet exceQuery(String sql) {
        ResultSet rs = null;
        try {
          if (_conn.isClosed()) {
            System.out.println("Conn is closed!!");
          }
          Statement stmt = _conn.createStatement();
          rs = stmt.executeQuery(sql);
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        return rs;
      }
    }

    接着我又做了一个接口:Productoption.java

    import java.util.ArrayList;

    public interface Productoption {
    public ArrayList getAllProducts();
    } //里面有一个返回为ArrayList的方法

    将这几个文件通过MyEclipse+Tomcat发布之后,进入发布后classes所在的文件夹:我的是C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\SimpleExample\WEB-INF\classes
    在cmd中输入命令C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\SimpleExample\WEB-INF\classes> java org.apache.axis.wsdl.Java2WSDL  -o mb.wsdl -l "http://localhost:80/axis/services/Productoption" -n "urn:Productoption" -p"com.icss.oa.opt" "urn:Produtoption"  com.icss.oa.opt.Productoption 生成了mb.wsdl文件,接着在输入命令 java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true  -Nurn:Productoption com.icss.oa.opt mb.wsdl 生成了许多的.java文件,
    最后就是在ProductoptionSoapBindingImpl.java中添加业务代码了,也就是说具体实现上面接口中的getAllProducts()方法了
    具体代码如下:

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;

    import com.icss.oa.entity.Product;

    public class ProductoptionSoapBindingImpl implements com.icss.oa.opt.Productoption{
        public java.lang.Object[] getAllProducts() throws java.rmi.RemoteException {
          Connection conn = null;    
             Statement stmt = null;    
             ResultSet rs = null;
             conn = DBAccess.getConn();
               String sql ="select * from product";
               
               ArrayList<Product> proList = new ArrayList<Product>();    
               
               try {
                 stmt = conn.createStatement();
                 rs = stmt.executeQuery(sql);
                 
                 Product product;
                 
                 while(rs.next()){
                   product = new Product();
                   
                   product.setPid(rs.getString(1));
                   product.setPname(rs.getString(2));
                   product.setPrice(rs.getDouble(3));
                   product.setCnt(rs.getInt(4));
                   product.setExt(rs.getString(5));
                   
                   proList.add(product);
                 }
               } catch (SQLException e) {
                 e.printStackTrace();
               }finally{
                 DBAccess.closeConn(stmt,rs,conn);
               }
              return proList.toArray();   
         
        }
    最后我用   java     org.apache.axis.client.AdminClient  deploy.wsdd命令发布了这个方法
    现在,我是想把getAllproducts()这个方法以web service的方式放到uddi上面,让人们可以查找并调用它。是不是不用使用  java     org.apache.axis.client.AdminClient  deploy.wsdd 命令而是直接把上面的mb.wsdl文件放到uddi上面啊,如果是的话,怎么放,可不可以指教一下呢。
    如果完成了上述的步骤,下面应该做什么呢,是不是可以来编写客户端的代码了,客户端该如何调用这个服务呢,希望您能够指教


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/12/11 22:03:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/11 20:46:01

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms