日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

staf工作笔记-对STAX进行扩展(配置并运行官方的Delay实例)

發(fā)布時(shí)間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 staf工作笔记-对STAX进行扩展(配置并运行官方的Delay实例) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

官方文檔如下:

http://staf.sourceforge.net/current/staxdg.html#Header_reg

關(guān)于官方文檔,這里有幾個(gè)坑要注意:

編譯STAX擴(kuò)展的教程在最后面,而交你寫的Delay卻在前面。

創(chuàng)建一個(gè)Jar文件在編譯的后面。

到目前為止,學(xué)了2個(gè)多月,3個(gè)月不到的java把這個(gè)官方例子跑起來了,花了2天時(shí)間,不容易啊。

?

首先進(jìn)行編譯,按照要求把CLASSPATH配好。配置要求如下:

這里的

?

set STAXDevDir=C:\STAXDev set STAFDir=C:\STAF set STAXCLASSES=%STAXDevDir%\STAF-INF\classes set JSTAFJAR=%STAFDir%\lib\JSTAF.jar set STAXJARDIR=%STAXDevDir%\STAF-INF\jars REM set STAXJARDIR=%STAFDir%\data\STAF\lang\java\service\STAX\jars set STAXJARFILES=%STAXJARDIR%\xercesImpl.jar;%STAXJARDIR%\xmlParserAPIs.jar;%STAXJARDIR%\jython.jar set STAXMONJAR=%STAFDir%\services\STAXMon.jar set CLASSPATH=%JSTAFJAR%;%STAXCLASSES%;%STAXJARFILES%;%STAXMONJAR%;

我也不知道該怎么配,但不要緊,為什么呢?因?yàn)楹竺嫔蒵ar文件的時(shí)候,只需要有Class文件就可以了。

?

所以把eclipse配置好。運(yùn)行下,然后打包成jar包。

eclipse配置如下:

這里有一些重復(fù)的jar包,因?yàn)槭俏以谘芯縠clipse添加jar包和CLASSPATH之間的關(guān)系時(shí)重復(fù)操作了,大家可以忽略。

點(diǎn)一下run后,導(dǎo)出jar包,但會有如下的情況:

有警告!!!!但沒關(guān)系,我們看下這個(gè)jar包,

有Class文件,這下就好了。直接解壓,然后按照

這個(gè)進(jìn)行配置,但可以發(fā)現(xiàn)ExtDelay$1.class這個(gè)類中類竟然木有,這是一個(gè)天坑。

現(xiàn)在看下ExtDelay.java這個(gè)文件:

/*****************************************************************************/ /* Software Testing Automation Framework (STAF) */ /* (C) Copyright IBM Corp. 2002 */ /* */ /* This software is licensed under the Eclipse Public License (EPL) V1.0. */ /*****************************************************************************/package com.ibm.staf.service.stax.extension.samples.extdelay;import javax.swing.*; import javax.swing.event.*; import com.ibm.staf.*; import java.util.*; import java.awt.*; import java.lang.reflect.*; import com.ibm.staf.service.stax.*;public class ExtDelay implements STAXMonitorExtension {STAFHandle fHandle;String fLocalMachine;String fStaxMachine;String fStaxServiceName;String fJobNumber;STAXMonitorFrame fMonitorFrame;String fTitle;HashMap fProgressBarMap;boolean fContinueElapsedTime = true;Hashtable fMonitorDelayStartTimes = new Hashtable();Hashtable fMonitorDelayTimeLabels = new Hashtable();MonitorElapsedTime fElapsedTime;private ImageIcon delayIcon;public JComponent init(STAXMonitorFrame monitorFrame, boolean newJob,String staxMachineName, String staxServiceName, String jobNumber)throws STAFException{fMonitorFrame = monitorFrame;fStaxMachine = staxMachineName;fStaxServiceName = staxServiceName;fJobNumber = jobNumber;fTitle = "Delay text";Class c = this.getClass();ClassLoader classLoader = c.getClassLoader();delayIcon = ((STAXMonitorExtensionClassLoader)classLoader).getImage("delay.gif");fProgressBarMap = new HashMap();fElapsedTime = new MonitorElapsedTime();fElapsedTime.start();return new JPanel();} public String getNotificationEventTypes(){return "ext-delay";}public void term() {}public String getTitle() { return fTitle; }public int getExtensionType(){return STAXMonitorFrame.EXTENSION_ACTIVE_JOB_ELEMENTS;}public JComponent getComponent(){return new JPanel();}public void handleEvent(Map map){String status = (String)map.get("status");String block = (String)map.get("block");String id = (String)map.get("name");if (status.equals("start")){String delay = (String)map.get("delay");Vector delayDataVector = new Vector();addRow(delayDataVector, "Delay Value", delay);JProgressBar progressBar = new JProgressBar();progressBar.setMaximum((new Integer(delay)).intValue());progressBar.setStringPainted(true);Dimension dim = progressBar.getPreferredSize();dim.height = 20;progressBar.setPreferredSize(dim);synchronized(fProgressBarMap){fProgressBarMap.put(id, progressBar);}JLabel elapsedTimeLabel = new JLabel();elapsedTimeLabel.setFont(new Font("Dialog", Font.PLAIN, 12));JPanel extPanel = new JPanel();extPanel.setLayout(new BorderLayout());extPanel.setBackground(Color.white);extPanel.add(BorderLayout.CENTER, progressBar);extPanel.add(BorderLayout.EAST, elapsedTimeLabel);fMonitorFrame.addActiveJobElementsNode("delay", id, block, id, delayIcon, extPanel, delayDataVector);synchronized(fMonitorDelayStartTimes){fMonitorDelayStartTimes.put(id, Calendar.getInstance());}synchronized(fMonitorDelayTimeLabels){fMonitorDelayTimeLabels.put(id, elapsedTimeLabel);}}else if (status.equals("stop")){synchronized(fProgressBarMap){fProgressBarMap.remove(id);}synchronized(fMonitorDelayStartTimes){fMonitorDelayStartTimes.remove(id);}synchronized(fMonitorDelayTimeLabels){fMonitorDelayTimeLabels.remove(id);}fMonitorFrame.removeActiveJobElementsNode(id, block);}else if (status.equals("iterate")){String delay = (String)map.get("delay");String currentIter = (String)map.get("currentiter");Integer delayInt = new Integer(delay);final Integer currentIterInt = new Integer(currentIter);float delayFloat = (float)(delayInt.intValue());float currentIterFloat = (float)(currentIterInt.intValue());int percent = (int)((currentIterFloat / delayFloat * 100));final JProgressBar progressBar = (JProgressBar)fProgressBarMap.get(id);progressBar.setValue(currentIterInt.intValue());fMonitorFrame.setActiveJobElementsNodeText(id, id + " " + (new Integer(percent).toString()) + "% complete");}}public void addRow(Vector vector, String name, String value){Vector newRow = new Vector(2);newRow.add(name);newRow.add(value);vector.add(newRow);}class MonitorElapsedTime extends Thread{public void run(){final int waitTime = fMonitorFrame.getElapsedTimeInterval();if (waitTime == 0)return;while (fContinueElapsedTime){final Enumeration delayElapsedTimeKeys = fMonitorDelayStartTimes.keys(); Runnable delayRunnable = new Runnable(){public void run(){while (fContinueElapsedTime && delayElapsedTimeKeys.hasMoreElements()){String delayKey = (String)delayElapsedTimeKeys.nextElement();Calendar delayStarted = (Calendar)fMonitorDelayStartTimes.get(delayKey);synchronized(fMonitorDelayTimeLabels){JLabel elapsedTimeLabel = (JLabel)fMonitorDelayTimeLabels.get(delayKey);elapsedTimeLabel.setText(" (" + STAXMonitorUtil.getElapsedTime(delayStarted) + ")");}}}};try{SwingUtilities.invokeAndWait(delayRunnable);}catch (InterruptedException ex){ex.printStackTrace();}catch (InvocationTargetException ex){ex.printStackTrace();}try{ Thread.sleep(waitTime);}catch (InterruptedException ex){}}}} }

發(fā)現(xiàn)的確有個(gè)MonitorElapsedTime類。

文檔上是ExtDelay$1.class,但生成的jar卻是ExtDelay$MonitorElapsedTime$1.class。

這是個(gè)天坑,直接修改文件

這里要注意:要把這個(gè)文件下載下來,這里面有g(shù)if和mf,不用自己去操作了

然后打包放到他要求的目錄,再進(jìn)打包,然后瀏覽

然后打包放到他要求的目錄,再進(jìn)打包,然后瀏覽

如下圖所示:

現(xiàn)在把文件直接拷貝到服務(wù)目錄:

然后在這里隨便選一個(gè)對stf.cfg進(jìn)行修改:(這個(gè)文件是staxug.pdf,是從官方文檔上下載的)

本人的配置如下:

隨后啟動:staf。發(fā)現(xiàn)沒有java的異常輸出。如下圖所示:

?

?

更具這個(gè)(也是staxug.pdf里面的)

配置調(diào)用的xml文件,上面是文檔上面的,下面是完整的寫好的:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE stax SYSTEM "stax.dtd"><stax><defaultcall function="main"/><function name="main"><stafcmd name="'Delay'"><location>'local'</location><service>'delay'</service><request>'delay 5000'</request></stafcmd></function> </stax>

接下來運(yùn)行,運(yùn)行截圖如下:

延遲5s然后沒了

?

總結(jié)

以上是生活随笔為你收集整理的staf工作笔记-对STAX进行扩展(配置并运行官方的Delay实例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。