⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 自己编写的服务器端jboss向client端发送message的程序
💻 JAVA
字号:
package service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.transaction.UserTransaction;


public class Server implements ServerMBean {

	private Context context;
	private UserTransaction ut = null;
	private String message;
	private DataSource dataSource;
	private Connection conn;
	private QueueConnectionFactory queueConnectionFactory;
	private QueueConnection queueConnection;
	private QueueSession queueSession;
	private QueueSender queueSender;

	public Server(){
		try {
            context = new InitialContext();     
            ut = (UserTransaction)context.lookup("UserTransaction"); 
            message = "";
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
	
    public void doTransaction(String userNameA, String userNameB, float account)throws Exception{
        try{
        	ut.begin();
			withdraw(userNameA, account);
			deposit(userNameB, account);
			send();
			ut.commit();  
        }catch(Exception e){
        	System.out.println("EXXXXXXXXX");
            try{
            	ut.rollback(); 
                message +=" Transaction Rollback.";
                send();             
            }catch(Exception e1){
            	System.out.println("YYYYYYYYY");
                e1.printStackTrace();
            }
            throw e;
        }
    }

    public void deposit(String userNameB, float account) throws Exception {
		dataSource = (DataSource) context.lookup("jdbc/account2");
        conn = dataSource.getConnection();
        PreparedStatement ps = conn.prepareStatement("update account set balance = balance + ? where name=?");
        ps.setFloat(1, account);
        ps.setString(2, userNameB);
        try{
        	int status = ps.executeUpdate();
            if (status == 0) {
            	message += "Update Error";
            	throw new Exception();
            }
        }catch (SQLException e){
        	throw e;
        }finally{
        	conn.close();
        }
        message += account + " are deposited to " + userNameB + ".";
	}

    public void withdraw(String userNameA, float account) throws Exception {
		dataSource = (DataSource) context.lookup("jdbc/account1");
        conn = dataSource.getConnection();
        PreparedStatement ps = conn.prepareStatement("update account set balance = balance - ? where name=?");
        ps.setFloat(1, account);
        ps.setString(2, userNameA);
        try{
        	int status = ps.executeUpdate();
            if (status == 0) {
            	message += "Update Error";
            	throw new Exception();
            }
        }catch (SQLException e){
        	throw e;
        }finally{
        	conn.close();
        }
        message += account + " are deposited to " + userNameA + ".\n";
	}
	
    public void send() throws Exception {
		try {
			queueConnectionFactory = (QueueConnectionFactory) context
					.lookup("QueueConnectionFactory");

			queueConnection = queueConnectionFactory.createQueueConnection();
			queueSession = queueConnection.createQueueSession(false,
					Session.AUTO_ACKNOWLEDGE);

			Queue queue = (Queue) context.lookup("queue/A");
			queueSender = queueSession.createSender(queue);
			queueConnection.start();
			TextMessage msg = queueSession.createTextMessage();
			msg.setText(message);
			System.out.println(msg);
			queueSender.send(queue,msg);
			System.out.println("ZZZZZZZZZ");
			message = "";
		} finally {
			queueSender.close();
			queueSession.close();
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -