jta格式
Ⅰ 求解析java代码,最好逐行解释
publicstaticvoidreadTxtFile(StringfilePath){
try{
Stringencoding="GBK";
Filefile=newFile(filePath);
if(file.isFile()&&file.exists()){//判断文件是否存在
InputStreamReaderread=newInputStreamReader(
newFileInputStream(file),encoding);//考虑到编码格式
BufferedReaderbufferedReader=newBufferedReader(read);
StringlineTxt=null;
while((lineTxt=bufferedReader.readLine())!=null){
System.out.println(lineTxt.split("|||||||||||||")[0].split("|")[0]);
System.out.println(lineTxt.split("|||||||||||||")[0].split("|")[1]);
System.out.println(lineTxt.split("|||||||||||||")[0].split("|")[2].replace("|||||||||||||",""));
}
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
}catch(Exceptione){
System.out.println("读取文件内容出错");
e.printStackTrace();
}
}
Ⅱ java问题 高手进!
package question;
/**
* @author (晕晕虾米)
* @version Dec 31, 2010 3:50:04 PM
* Description 原代码对一元二次方程的计算逻辑有误。
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LastOne implements ActionListener {
static JFrame jf;
static Container c;
static JPanel jp1;
static JLabel jl1, jl2, jl3;
static JTextField jtf1, jtf2, jtf3;
static JTextArea jta1;
static JButton jb1;
public LastOne() {
jf = new JFrame("求根公式");
c = jf.getContentPane();
jp1 = new JPanel();
jl1 = new JLabel("二次项系数");
jl2 = new JLabel("一次项系数");
jl3 = new JLabel("常数项系数");
jtf1 = new JTextField(7);
jtf2 = new JTextField(7);
jtf3 = new JTextField(7);
jta1 = new JTextArea(10, 10);
jta1.setFont(new Font("宋体", 0, 12));
jb1 = new JButton("计算");
jb1.addActionListener(this);
c.add(jta1);
c.add(BorderLayout.NORTH, jp1);
jp1.setLayout(new FlowLayout());
jp1.add(jl1);
jp1.add(jtf1);
jp1.add(jl2);
jp1.add(jtf2);
jp1.add(jl3);
jp1.add(jtf3);
jp1.add(jb1);
jf.setSize(600, 200);
jf.setLocation(300, 200);
jf.setVisible(true);
}
public static void main(String args[]) {
new LastOne();
}
public void actionPerformed(ActionEvent ae) {
int x1, x2, tri;
if (ae.getSource() == jb1) {
try {
int a = Integer.parseInt(jtf1.getText());
int b = Integer.parseInt(jtf2.getText());
int c = Integer.parseInt(jtf3.getText());
tri = b * b - 4 * a * c;
x1 = (int) (-b + Math.sqrt(tri)) / 2 * a;
x2 = (int) (-b - Math.sqrt(tri)) / 2 * a;
if (a != 0) {
if (tri > 0) {
jta1.setText(String.valueOf(x1)+", "+String.valueOf(x2));
}
if (tri < 0) {
jta1.setText("没有实根");
}
if (tri == 0) {
jta1.setText(String.valueOf(x1));
}
} else {
jta1.setText("不是二次方程");
}
} catch (NumberFormatException e) {
jta1.setText("输入数据格式异常");
}
}
}
}
Ⅲ jta格式怎么打开
可以不用那个方法,这样就能用io里的fileinputstream()来作了,是吧?public void ... 我大致知道你的意思应该怎么作了,你给弹出的button++事件就好
Ⅳ java图形界面和文件
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class Experiment extends JFrame implements ActionListener
{
private JMenuBar jb;// 菜单条
private JMenu m1, m2, m3;// 菜单
private JMenuItem i1, i2, ii1, ii2;// 菜单项
private JLabel jl;
private JTextField jt;
private FileDialog fd;
private File file1 = null;
private JTextArea jta1, jta2;
// 一般我们在使用JTextArea,都要加入JScrollPane
private JScrollPane jsp1, jsp2;
// 取得屏幕的宽度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
// 取得屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
public Experiment()
{
jb = new JMenuBar();
m1 = new JMenu("文件");
m2 = new JMenu("编辑");
m3 = new JMenu("视图");
i1 = new JMenuItem("打开");
i2 = new JMenuItem("保存");
ii1 = new JMenuItem("复制");
ii2 = new JMenuItem("粘贴");
jl = new JLabel("文件名");
jt = new JTextField();
jta1 = new JTextArea(20, 15);
jta2 = new JTextArea(20, 15);
jsp1 = new JScrollPane(jta1);
jsp2 = new JScrollPane(jta2);
jl.setBounds(250, 60, 60, 20);
jt.setBounds(310, 60, 150, 20);
jsp1.setBounds(20, 120, 300, 400);
jsp2.setBounds(360, 120, 300, 400);
this.setJMenuBar(jb);
jb.add(m1);
jb.add(m2);
jb.add(m3);
m1.add(i1);
m1.add(i2);
m2.add(ii1);
m2.add(ii2);
this.add(jl);
this.add(jt);
this.add(jsp1);
this.add(jsp2);
i1.addActionListener(this);
i2.addActionListener(this);
// 标题
this.setTitle("实验7");
// 窗体大小和剧中
this.setBounds((width - 700) / 2, (height - 600) / 2, 700, 600);
// 不允许改变大小
this.setResizable(false);
// 窗口关闭退出程序
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
// 不采用布局
this.setLayout(null);
// 是否显示
this.setVisible(true);
}
public void actionPerformed(ActionEvent c)
{
// 如果点击的是i1
if (c.getSource() == i1)
{
fd = new FileDialog(this, "请选择打开的文件", FileDialog.LOAD);
fd.setVisible(true); // 创建并显示打开文件对话框
if ((fd.getDirectory() != null) && (fd.getFile() != null))// 路径和文本内容都不为空
{
jt.setText(fd.getFile());// 在文本框里显示文件名
try
{
// 以缓冲区方式读取文件内容
file1 = new File(fd.getDirectory(), fd.getFile());
FileReader fr = new FileReader(file1);
BufferedReader br = new BufferedReader(fr);
String aline;
while ((aline = br.readLine()) != null)
// 按行读取文本,append方法是追加
jta2.append(aline + "\r\n");
fr.close();
br.close();
} catch (IOException ioe)
{
System.out.println(ioe);
}
}
}
if (c.getSource() == i2)
{
fd = new FileDialog(this, "请选择保存的路径", FileDialog.SAVE);
if (file1 == null)
{
fd.setFile("*.txt");
} else
{
fd.setFile(file1.getName());
}
fd.setVisible(true); // 创建并显示保存文件对话框
if ((fd.getDirectory() != null) && (fd.getFile() != null))
{
file1 = new File(fd.getDirectory(), fd.getFile());
save(file1);
jt.setText(fd.getFile());// 在文本框里显示文件名
}
}
}
public void save(File file12)
{
try
{
// 将文本区内容写入字符输出流
FileWriter fw = new FileWriter(file1);
fw.write(jta1.getText());
fw.close();
} catch (IOException ioe)
{
System.out.println(ioe);
}
}
public static void main(String[] args)
{
new Experiment();
}
}
自己看看吧,复制,粘贴库里有方法()和paste(),打开和保存,就是输入流和输出流的操作,自己去看看就会了
Ⅳ Java 源代码的编码问题
//我写了一个程序,你把文字复制到文本框中点转码按钮,就可以了
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class Class1 extends JFrame {
private final class AT implements ActionListener {
public void actionPerformed(ActionEvent e) {
jta.setText(fixString(jta.getText()));
}
}
public static void main(String[] args) {
JFrame jf = new Class1();
}
JTextArea jta = new JTextArea();
public Class1() {
setSize(400, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JButton jb = new JButton("转码");
jb.addActionListener(new AT());
add(jta);
add("North", jb);
setVisible(true);
}
String fixString(String s) {
while (true) {
int index = s.indexOf("\\u");
if (index != -1) {
String s1 = s.substring(index, index + 6);
if (s1.matches("\\\\u[0-9A-F]{4}")) {
char c = (char) Integer.parseInt(s1.replace("\\u", ""), 16);
s = s.substring(0, index) + c + s.substring(index + 6);
}
} else {
break;
}
}
return s;
}
}
Ⅵ 通信技术的问题
第一代通信技术的标准是仅限于语音的蜂窝电话;第二代通信技术其实就是指2G(GSM),标准就是实现了全球移动通话;第三代通信就是指3G(3rd Generation),标准就是实现全球范围内的无隙漫游以及能够处理图像、音乐、视频等多种媒体形式。第四代通信技术还在研发中,主要是针对宽带接入和网络分布,标准就是极大提高了数据数率,实现宽带多媒体通信。通俗点说,第一代就通信技术就是实现了固话语音通信,第二代通信技术就是实现了移动语音通话,第三代通信技术就是实现了多媒体处理功能,第四代就是对第三代的加强和组建综合宽带通信网。我国第四代通信还属于初步探讨阶段,没有什么实质性的发展。
PS:本人从事通信设计行业时间还不是很长,希望回答能对你有所帮助。
Ⅶ 蛋疼...有个音乐文件,被写到JTA格式,怎么打开呢图片写到JTA可以用工具打开,可音乐怎么打开
右键音乐文件,
点击打开方式,
然后选择一个程序[播放器],
最后确定就可以了。
Ⅷ 谁能给我详细的解释一下JNDI,JTA,JMS都是什么啊
JNDI
Java术语
英文全称是:Java Naming and Directory Interface
术语解释:一组帮助做多个命名和目录服务接口的API。
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。
JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;
可以同时连接到多个命名或目录服务上;
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
JNDI程序包:
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。
利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
JNDI与JDBC:
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
代码示例:
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
}
catch(NamingException ne){
...
}
JNDI与JMS:
消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。
代码示例:
try{
Properties env = new Properties();
InitialContext inictxt = new InitialContext(env);
TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");
...
}
catch(NamingException ne){
...
}
访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法
Attribute attr =
directory.getAttributes(personName).get("email");
String email = (String)attr.get();
通过使用JNDI让客户使用对象的名称或属性来查找对象:
foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
浏览命名空间:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
参考资料:
http://java.sun.com/procts/jndi/examples.html
http://java.sun.com/procts/jndi/serviceproviders.html
常用的JNDI操作:
常用的JNDI操作:
void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定
void unbind(String sName);――释放:用来把对象从目录中释放出来
void lookup(String sName,Object object);――查找:返回目录总的一个对象
void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称
NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表
NamingEnumeration list(String sName);
代码示例:重新得到了名称、类名和绑定对象。
NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}
JTA :
JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。
要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法。例如:
utx.begin();
// ...
DataSource ds = obtainXADataSource();
Connection conn = ds.getConnection();
pstmt = conn.prepareStatement("UPDATE MOVIES ...");
pstmt.setString(1, "Spinal Tap");
pstmt.executeUpdate();
// ...
utx.commit();
让我们来关注下面的话:
“用 JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、 javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC 驱动程序。一个实现了这些接口的驱动程序将可以参与 JTA 事务。一个 XADataSource 对象就是一个 XAConnection 对象的工厂。 XAConnection s 是参与 JTA 事务的 JDBC 连接。”
要使用JTA事务,必须使用XADataSource来产生数据库连接,产生的连接为一个XA连接。
XA连接(javax.sql.XAConnection)和非XA(java.sql.Connection)连接的区别在于:XA可以参与JTA的事务,而且不支持自动提交。
Note:
Oracle, Sybase, DB2, SQL Server等大型数据库才支持XA, 支持分布事务。
My SQL 连本地都支持不好,更别说分布事务了。
JTA方式的实现过程:
用XADataSource产生的XAConnection它扩展了一个getXAResource()方法,事务通过这个方法把它加入到事务容器中进行管理.对于调用者来说,根本看不到事务是如果管理的,你只要声明开始事务,告诉容器我下面的操作要求事务参与了,最后告诉事务说到这儿可以提交或回滚了,别的都是黑箱操作。
在使用JTA之前,你必须首先实现一个Xid类用来标识事务(在普通情况下这将由事务管理程序来处理)。Xid包含三个元素:formatID、gtrid(全局事务标识符)和bqual(分支修饰词标识符)。
下面的例子说明Xid的实现:
import javax.transaction.xa.*;
public class MyXid implements Xid
{
protected int formatId;
protected byte gtrid[];
protected byte bqual[];
public MyXid()
{
}
public MyXid(int formatId, byte gtrid[], byte bqual[])
{
this.formatId = formatId;
this.gtrid = gtrid;
this.bqual = bqual;
}
public int getFormatId()
{
return formatId;
}
public byte[] getBranchQualifier()
{
return bqual;
}
public byte[] getGlobalTransactionId()
{
return gtrid;
}
}
其次,你需要创建一个你要使用的数据库的数据源:
public DataSource getDataSource()
throws SQLException
{
SQLServerDataSource xaDS = new
com.merant.datadirect.jdbcx.sqlserver.SQLServerDataSource();
xaDS.setDataSourceName("SQLServer");
xaDS.setServerName("server");
xaDS.setPortNumber(1433);
xaDS.setSelectMethod("cursor");
return xaDS;
}
例1?这个例子是用“两步提交协议”来提交一个事务分支:
XADataSource xaDS;
XAConnection xaCon;
XAResource xaRes;
Xid xid;
Connection con;
Statement stmt;
int ret;
xaDS = getDataSource();
xaCon = xaDS.getXAConnection("jdbc_user", "jdbc_password");
xaRes = xaCon.getXAResource();
con = xaCon.getConnection();
stmt = con.createStatement();
xid = new MyXid(100, new byte[], new byte[]);
try {
xaRes.start(xid, XAResource.TMNOFLAGS);
stmt.executeUpdate("insert into test_table values (100)");
xaRes.end(xid, XAResource.TMSUCCESS);
ret = xaRes.prepare(xid);
if (ret == XAResource.XA_OK) {
xaRes.commit(xid, false);
}
}
catch (XAException e) {
e.printStackTrace();
}
finally {
stmt.close();
con.close();
xaCon.close();
}
当然,实际过程中,我们不需要写这些代码,这些代码是JTA最终的实现代码。
关于“两步提交协议”,可以参看下面的文章:
http://www.jspcn.net/htmlnews/11049371131251752.html
http://www.vermicelli.pasta.cs.uit.no/ipv6/students/andrer/doc/html/node18.html
选择最好的方式
用 JDBC API 进事务界定来构建 DAO 类的。这些 DAO 类可以总结如下:
事务界定代码嵌入在 DAO 类中。
DAO 类使用 JDBC API 进行事务界定。
调用者不能界定事务。
事务范围局限于单个 JDBC 连接。
JDBC 事务并不总是适合复杂的企业应用程序。如果您的事务要跨越多个 DAO 或者多个数据库,那么下列实现策略也许更合适:
事务用 JTA 界定。
事务界定代码从 DAO 中分离出来。
调用者负责界定事务。
DAO 加入一个全局事务。
JDBC 方式由于其简单性而具有吸引力,JTA 方式提供了更大的灵活性。您所选择的实现将取决于应用程序的特定需求。
XADataSource例子:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ===================================================================== -->
<!-- -->
<!-- JBoss Server Configuration -->
<!-- Thanks to Horia Muntean <[email protected]> -->
<!-- ===================================================================== -->
<!-- $Id: db2-xa-ds.xml,v 1.1.2.1 2003/05/30 18:25:57 d_jencks Exp $ -->
<datasources>
<!--
XADatasource for DB2 V8.1 (app driver)
$db2_install_dir/java/db2java.zip into $jboss_install_dir/server/default/lib
-->
<xa-datasource>
<jndi-name>DB2XADS</jndi-name>
<xa-datasource-class>COM.ibm.db2.jdbc.DB2XADataSource</xa-datasource-class>
<xa-datasource-property name="DatabaseName">yout_database_name</xa-datasource-property>
<xa-datasource-property name="User">your_user</xa-datasource-property>
<xa-datasource-property name="Password">your_password</xa-datasource-property>
</xa-datasource>
</datasources>
JMS:
JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,翻译为Java消息服务。JMS支持点对点和发布/订阅两种消息模型。
JMS基本概念
1.JMS(Java Message Service)是访问企业消息系统的标准API,它便于消息系
统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。
2. JMS基本功能
JMS是用于和面向消息的中间件相互通信的应用程序接口。它既支持点对点(point-to-point)的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。
3. WebLogic JMS Server介绍
WebLogic Server8.1符合JAVA规范,并通过Sun Microsystems J2EE 1.3认
证.作为WebLogic的一部分,当然WebLogic JMS Server也完全遵从JMS规范,还支持集群,并可以应用于实际企业系统.下图是WebLogic JMS Server体系结构.图中可以看到WebLogic JMS Server主要组件有: WebLogic JMS servers(用于消息通信),Java客户端,JNDI(用于域名查找), 后备存储(用于持久消息存储,基于文件或者JDBC数据库).
WebLogic JMS特性
1. 消息通信模型
JMS 支持两种消息通信模型:点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。除了下列不同之外,这两种消息通信模型非常地相似:
PTP 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。
2. 消息组成
消息传递系统的中心就是消息。
一条 Message 分为三个组成部分:
· 头(header)是个标准字段集,客户机和供应商都用它来标识和路由消息。
· 属性(property)支持把可选头字段添加到消息。如果您的应用程序需要不使用标准头字段对消息编目和分类,您就可以添加一个属性到消息以实现这个编目和分类。提供 set<Type>Property(...) 和 get<Type>Property(...) 方法以设置和获取各种 Java 类型的属性,包括 Object。JMS 定义了一个供应商选择提供的标准属性集。
· 消息的主体(body)包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。
JMS 为不同类型的内容提供了它们各自的消息类型,但是所有消息都派生自 Message 接口。
· StreamMessage:包含 Java 基本数值流,用标准流操作来顺序的填充和读取。
· MapMessage:包含一组名/值对;名称为 string 类型,而值为 Java 的基本类型。
· TextMessage:包含一个 String。
· ObjectMessage:包含一个 Serializable Java 对象;能使用 JDK 的集合类。
· BytesMessage:包含未解释字节流: 编码主体以匹配现存的消息格式。
· XMLMessage: 包含XML内容。扩展TextMessage,XMLMessage 类型的使用,使得消息过滤非常便利。
3. 消息确认模式
非事务性会话中,应用程序创建的会话有5 种确认模式,而在事务性会话中,确认模式被忽略。
五种确认模式说明:
· AUTO_ACKNOWLEDGE:自动确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收。
· CLIENT_ACKNOWLEDGE:客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用,会话会确认最后一次确认之后所有接收到的消息。这种模式允许应用程序以一个调用来接收,处理并确认一批消息。注意:在管理控制台中,如果连接工厂的Acknowledge Policy(确认方针)属性被设置为"Previous"(提前),但是你希望为一个给定的会话确认所有接收到的消息,那么就用最后一条消息来调用acknowledge()方法。
· DUPS_OK_ACKNOWLEDGE:允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。注意:如果你的应用程序无法处理重复的消息的话,你应该避免使用这种模式。如果发送消息的初始化尝试失败,那么重复的消息可以被重新发送。
· NO_ACKNOWLEDGE:不确认模式。不确认收到的消息是需要的。消息发送给一个NO_ACKNOWLEDGE 会话后,它们会被WebLogic 服务器立即删除。在这种模式下,将无法重新获得已接收的消息,而且可能导致下面的结果:1. 消息可能丢失;和(或者)另一种情况:2. 如果发送消息的初始化尝试失败,会出现重复消息被发送的情况。
· MULTICAST_NO_ACKNOWLEDGE:IP组播下的不确认模式,同样无需确认。发送给一个MULTICAST_NO_ACKNOWLEDGE会话的消息, 会共享之前所述的NO_ACKNOWLEDGE 确认模式一样的特征。这种模式支持希望通过IP 组播方式进行消息通信的应用程序,而且无需依赖会话确认提供的服务质量。注意:如果你的应用程序无法处理消息的丢失或者重复,那么你应该避免使用这种模式。如果发送消息的初始化尝试失败的话,重复的消息可能会被再次发送。
注:在上表的5 种确认模式中,AUTO_ACKNOWLEDGE ,DUPS_OK_ACKNOWLEDGE 和
CLIENT_ACKNOWLEDGE 是JMS 规范定义的,NO_ACKNOWLEDGE 和MULTICAST_NO_ACKNOWLEDGE是WebLogic JMS 提供的。
参考资料:Roslin http://www.mldn.cn/articleview/2007-1-16/article_view_854.htm
Ⅸ public void actionPerformed(ActionEvent e){
你那几个变量定义在哪了??
你必须定义成类变量,才可以在方法中调用。