【原创】船长的第一个SOA练习【SOA学习】

本文记录了一次SOA学习实践,通过构建webServices与mysql数据库交互,实现登录验证及黑名单查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:
本文记录了学习SOA,完成一个涉及到使用web Services访问mysql数据库的练习的过程  (附图)
【原创】船长的第一个SOA练习【SOA学习】
 
标题
【原创】船长的第一个SOA练习【SOA学习】
 
作者:陈海青(josonchen)
日期:2007.11.21
 
摘要:
本文记录了学习SOA,完成一个涉及到使用web Services访问mysql数据库的练习的过程  
关键字:
SOA , web Services, weblogic , workshop , mysql 5.0, java
 
刚参加完11月3日系分考试,试题多次涉及SOA 、ESB等内容,平时不注意学习这些,几乎被打败了 :(
正好有个学习SOA的机会,培训公司是武汉的圣伟思,可不能错过。今天是soa培训的第4天,培训效果不错,给我们培训宋老师懂的真多。我终于了解了诸如SOA、XSD、Web Services、ESB、WSDL......等东东,一大堆缩写,苦涩难懂,简直可用作密码。借助IDE的强大功能,而且终于完成了我的第一个SOA练习,记录脚印如下:
 
一:练习环境:
应用服务器:weblogic 8.1 、tomcat
数据库服务器:任选,我用的是mysql 5.0
开发工具:workshop/jbuilder 2006/记事本
开发语言:java /php /c#等。( http://www.chq.name
二:简单的开发需求:
1)  登录验证功能,做成webservices,发布出来,提供服务
2)  检查某个人的ID是否在黑名单里,做成webservices,发布出来,提供服务
3)  做一个web应用,访问webservices,完成登录和查询功能。( http://www.chq.name
Image
(图一)
 
三:过程(以weblogic 8.1+ mysql 5.0+ workshop+ java为例)
 
1)  建立Web Services ,包括写Bean,生成WSDL。共有两个,一个验证密码,一个检查黑名单。
1、  新建一个“应用程序”,类型为“空的应用项目”,指定目录,如myWebServers01
2、  在其中新建一个“项目”,类型为“Web Services项目”,指定目录
3、  在其设计视图,右键添加一个方法,命名为login
4、  在源代码视图,写好login验证逻辑的代码。
5、  在login上右键—“生成WSDL文件”-----我们学得那么费劲,这里只是一个点击动作就over了
6、  在“应用程序”层次上,右键—“生成应用程序”,完成编译和部署工作。
7、  ,可以运行进行测试了。CTRL+F5
第一个Web Services工作完成,主要成果login.jws附后(WSDL不再附加了。在项目中可以直接查看):
 
再来一个,过程基本相同,主要是要访问数据库,时间关系,只是简单的不规范的示例,源码Blacklist.jws附后。
 
----------------------------------------------------
2)  建立B/S结构的Web应用,提供登录页面和输入页面,使用Web Services访问数据库等。
1、  新建一个项目,类型:“Web界面—web项目“
2、  在其设计视图,新建一个Action(动作)和Form,命名为login 和LoginForm。
3、  在login上右键-“编辑Bean”,添加属性:id/pwd
4、  在login上右键—“生成输入页面“,生成.jsp文件,
5、  调整工作流的指向,如图一所示,命名并为其链接改名。
6、  在其操作试图,右键—添加控件—web Service,添加login.、Blacklist两个web Service,其WSDL可通过其网址提供,如“http://localhost:7001/Ws_login/Blacklist.jws?WSDL”
7、  修改源码,添加逻辑处理的代码。
8、  在“应用程序”层次上,右键—“生成应用程序”,完成编译和部署工作。
9、  ,可以运行进行测试了。(http://www.chq.nameCTRL+F5
测试效果如附图。
Image
(图二)
Image
(图三)
Image
(图四)
Image
(图五)
-------------------------------------------------------------------------------------------------------
 
源码1
 
------------------------------------------------login.Jws----
public class Login implements com.bea.jws.WebService
{
    static final long serialVersionUID = 1L;
 
 
    /**
     * @common:operation
     */
      public String login(String id,String pwd){
        String result;
        if (id.equalsIgnoreCase(pwd)){
        result = "ok";
        }
        else
        result= "yes";
       
        return result;
    }
 
}
-----------------------------------------------------------
 
源码2
 
--------------------------- Blacklist .jws--------------------------------
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
 
public class Blacklist implements com.bea.jws.WebService
{
    static final long serialVersionUID = 1L;
//定义相关属性( http://www.hhrz.org)
//驱动程序名( http://www.chq.name)
    private String driverName = "com.mysql.jdbc.Driver";
//数据库用户名( http://www.hhrz.org)
    private String userName = "test";
//密码( http://www.chq.name)
    private String userPasswd = "test";
//数据库名( http://www.hhrz.org)
    private String dbName = "test";
//表名( http://www.hhrz.org)
    private String tableName = "blacklist";
//联结字符串( http://www.hhrz.org)
    private String url = "jdbc:mysql://localhost:3306/" + dbName + "?user=" + userName +
                 "&password=" + userPasswd;
 
//获得的链接结果( http://www.hhrz.org)
    private Connection connection;
    private Statement stmt;
    private ResultSet rs;
 
    public Blacklist() {
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            System.out.println("JdbcDriver Not Found.");
        }
        try {
            connection = DriverManager.getConnection(url);
         } catch (SQLException e) {
            System.out.println("Create Connection failed .");
        }
        try {
            //建立Statement Object( http://www.hhrz.org)
            stmt = connection.createStatement();
        } catch (SQLException e) {
            System.out.println("Create Statement failed .");
        }
    }
    /**
     * @common:operation
     */
    public String getblacklist(String id) throws SQLException {
 
        //设置并执行SQL语句 ( http://www.chq.name)
        String query = "select * from " + tableName;
        rs = stmt.executeQuery(query);
        String ls_result = "No";
        //得到结果集ResultSet( http://www.chq.name)
        while (rs.next()) {
            if (id.equalsIgnoreCase(rs.getString(1))) {
                ls_result = rs.getString(2);
                break;
            }
        }
        //executeUpdate()(http://www.chq.name)
        //String upd = "insert into test (id,name) values(1001,xuzhaori)";
        //int con = stmt.executeUpdate(upd);
        //execute();(http://www.chq.name)
        // closeConn();
        //weblogic 中难道会自动管理数据库连接?关掉链接会报错。thinking。。( http://www.chq.name)
        return ls_result;
    }
 
    private void closeConn() throws SQLException {
        try {
            rs.close();
        } catch (SQLException ex) {
              System.out.println(ex.getStackTrace());
        }
        try {
            stmt.close();
        } catch (SQLException ex1) {
            System.out.println(ex1.getStackTrace());
        }
        try {
            connection.close();
        }
        catch (SQLException ex2) {
            System.out.println(ex2.getStackTrace());
        }
 
    }
}
-----------------------------------------------------------
 
 
 
源码3
------------------------- Controller.jpf-----------------------------------
 
public class Controller extends PageFlowController
{
    /**(http://www.chq.name)
     * @common:control
     */
    private webServices.InBlacklist inBlacklist;
 
    /**(http://www.chq.name)
     * @common:control
     */
    private webServices.ws_login ws_login;
 
    /**(http://www.chq.name)
     * @jpf:action
     * @jpf:forward name="login" path="login.jsp"
     */
    protected Forward begin()
    {
        return new Forward("login");
    }
 
 
    /**(http://www.chq.name)
     * @jpf:action
      * @jpf:forward name="success" path="inputBlacklist.jsp"
     * @jpf:forward name="fault" path="error.jsp"
     */
    protected Forward login(LoginForm form)
    {
        String id = form.getId();
        String pwd = form.getPwd();
        String strTrue = ws_login.login(id,pwd);
        if (strTrue.equalsIgnoreCase("ok")){
           
        return new Forward("success");
        }
        else
        return new Forward("fault");
    }
 
    /**(http://www.chq.name)
     * @jpf:action
     * @jpf:forward name="notinlist" path="notInBlacklist.jsp"
     * @jpf:forward name="inlist" path="inBlacklist.jsp"
     */
    protected Forward inBlacklist(InBlacklistForm form)
    {
        String id = form.getId();
        String strIn = inBlacklist.getblacklist(id);
        if(strIn.equalsIgnoreCase("NO"))
        {
         return new Forward("notinlist");
        
        }
        else
        return new Forward("inlist");
    }
 
    /**(http://www.chq.name)
     * FormData get and set methods may be overwritten by the Form Bean editor.
     */
    public static class LoginForm extends FormData
    {
        private String pwd;
 
        private String id;
 
        public void setId(String id)
        {
            this.id = id;
        }
 
        public String getId()
        {
            return this.id;
        }
 
        public void setPwd(String pwd)
        {
            this.pwd = pwd;
        }
 
        public String getPwd()
        {
            return this.pwd;
        }
    }
 
    /**(http://www.chq.name)
     * FormData get and set methods may be overwritten by the Form Bean editor.
     */
    public static class InBlacklistForm extends FormData
    {
        private String id;
 
        private String nsrsbh;
 
        public void setId(String id)
        {
            this.id = id;
        }
 
        public String getId()
        {
            return this.id;
        }
    }
}
 
 
------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值