posts - 17,  comments - 6,  trackbacks - 0
          birt 集成到 weblogic 9中,老是出現問題:

          java.lang.NoSuchMethodError: org.mozilla.javascript.ImporterTopLevel.initStandar
          dObjects(Lorg/mozilla/javascript/Context;Z)V
          at org.eclipse.birt.core.script.ScriptContext.<init>(ScriptContext.java:
          81)
          at org.eclipse.birt.report.engine.executor.ExecutionContext.<init>(Execu
          tionContext.java:248)
          at org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.
          java:118)
          at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.<init>(RunAn
          dRenderTask.java:54)
          at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.createRunA
          ndRenderTask(ReportEngineHelper.java:215)
          at org.eclipse.birt.report.engine.api.ReportEngine.createRunAndRenderTas
          k(ReportEngine.java:258)



          google后,發現兩個解決方案,

          一、替換weblogic.jar中的js.jar文件,
          麻煩,有隱串



          二、在 web應用中加入
          <prefer-web-inf-classes>true</prefer-web-inf-classes>

          導致應用無法發布成功。


          最后自己想出一種方案:
          在weblogic的應動域目錄中,setDomainEnv.cmd文件中, 更改如下:

          @REM SET THE CLASSPATH

          set CLASSPATH=%WL_HOME%\server\lib\mysql5.jar;%WL_HOME%\server\lib\js.jar;%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POST_CLASSPATH%;%WLP_POST_CLASSPATH%


          將js.jar 文件復制到 server/lib目錄中。在類路徑中設置優先載入。

          pdf電子書下載   soa.hntky.com

          posted @ 2008-05-29 16:56 風中的舞者 閱讀(2538) | 評論 (3)編輯 收藏
          向大家推薦一下java pdf下載的網站(全英文章)
          http://soa.hntky.com
          posted @ 2008-03-04 13:01 風中的舞者 閱讀(348) | 評論 (0)編輯 收藏

          soa.hntky.com
          很多的電子書,速度較快,可以搜索

          posted @ 2007-05-25 08:36 風中的舞者 閱讀(926) | 評論 (1)編輯 收藏

          ?


          int ????ret??????
          string?filename
          string?filename2
          string?resume

          filename
          = " d:\smis2\xmk.xls "
          filename2
          = " d:\smis2\2006050120xmk.xls "
          resume
          = " d:\smis2\resume.xlw "
          filedelete(resume)
          oleobject????xlapp,xlsub?????
          xlapp
          = create?oleobject
          ret
          = xlapp.connecttonewobject( " excel.sheet " )???
          // ret=xlapp.connecttonewobject("excel.application")???

          if ????ret < 0 ????then??????
          ?????????????messagebox(
          " 你的電腦未安裝Excel " ,string(ret))??????
          ?????????????
          return ??????
          end????
          if ??????
          xlapp.application.workbooks.open(filename)??????
          xlsub
          = xlapp.application.activeworkbook.worksheets[ 1 ]??????

          xlsub.cells[
          4 , 2 ].value = " 我是吳吳 "

          xlapp.saveas(filename2,
          true )
          messagebox(
          " aa " , " aa " )
          xlapp.application.save(
          ' ? ' )
          // xlapp.application.close()
          xlapp.application.quit()
          xlsub.disconnectobject()
          xlapp.disconnectobject()
          destroy?xlsub
          destroy?xlapp

          posted @ 2006-10-20 10:09 風中的舞者 閱讀(748) | 評論 (0)編輯 收藏
               摘要: Introducing the JavaMail API The JavaMail API is an optional package (standard extension) for reading, composing, and sending electronic messages. You use the package to create Mail User Agent ...  閱讀全文
          posted @ 2006-10-20 09:01 風中的舞者 閱讀(327) | 評論 (0)編輯 收藏

          Javamail操作指南(二)

          作者:Bromon 來源:http://blog.itpub.net (2005-06-28 13:30:54)


          ?

          怎樣才算比較完整的Javamail操作指南?我想應該包括絕大多數基本的email操作,能夠應付一般的應用。在本指南中打算囊括以下內容:

          ?●?發送email:包括文本郵件、HTML郵件、帶附件的郵件、SMTP驗證
          ?●?接收email:pop3遠程連接、收取不同MIME的郵件、處理附件

          ?我想有了上述功能的介紹,應該可以應付很多email的相關應用了。所以請允許我給本文擬了一個比較狂妄的名字,這樣才能保證收視率,。還是那句話,寫這個post的原因就是沒有在網上看到更全面的,你看過的話記得要告訴我。

          ? 下面的所有例子都經過實際測試,你可以說它寫得不夠OO,不夠plugable,但是它的確是可以參考的。自從有了javamail,發垃圾郵件就方便多了。本文代碼多說明少,這倒不是我偷懶,而是很多東西都涉及pop3等協議的規范,如果不了解這些規范的話,由的東西我實在不知道怎么跟你解釋;如果了解的話,那我基本上就不用再解釋。所以本著實用的原則就省略了,由興趣的話自己去翻翻協議規范。

          ?廢話少說,首先需要配置環境。需要的包是mail.jar和activation.jar。高版本的J2SDK?EE自帶。地址嘛,再java.sun.com上搜索一下,很容易找到。放到classpath中就KO。

          ?一、?郵件的發送

          ?下面了弄個發郵件的Hello?World,熱熱身:

          ?/*************
          ?Name:TextMailSender.java
          ?Author:Bromon
          ?Version:1.0
          ?Date:2004-4-26
          ?Note:發送email到bromon@163.com,需要安裝SMTP服務器
          ?*************/
          ?package?org.bromon.mail;
          ?import?javax.mail.*;
          ?import?javax.mail.internet.*;
          ?import?java.util.*;
          ?public?class?TextMailSender
          ?{
          ?public?static?void?main(String?args[])
          ?{
          ??try
          ??{
          ???Properties?prop=new?Properties();
          ???//指定要使用的SMTP服務器為bromon2k
          ???prop.put("mail.smtp.host","bromon2k");
          ???Session?mailSession=Session.getDefaultInstance(prop);

          ???//發件人地址
          ???InternetAddress?from=new?InternetAddress("bromon@bromon2k");
          ???//收件人地址
          ???InternetAddress?to=new?InternetAddress("bromon@163.com");
          ???
          ???MimeMessage?msg=new?MimeMessage(mailSession);
          ???msg.setFrom(from);
          ???msg.addRecipient(javax.mail.Message.RecipientType.TO,to);
          ???//發信日期
          ???msg.setSentDate(new?java.util.Date());
          ???//title
          ???msg.setSubject("你好");
          ???//郵件正文
          ???msg.setText("hello,bromon");
          ???Transport.send(msg);
          ??}catch(Exception?e)
          ??{
          ???System.out.println(e);
          ??}
          ?}
          ?}?


          ? 程序很簡單,但是它是不能運行的(倒)。除非你的機器上安裝了一個SMTP服務器,而且你的機器還叫做bromon2k。寫這么一段不能執行的程序不是為了找打,而是讓各位對javamail有個基本印象,我就懶得改了。下面演示的是如何通過163、sohu等email服務商提供的免費郵箱來發郵件,基本操作和上面的一樣,只是多一個SMTP驗證而已:

          ?/*
          ?*?Created?on?2004-4-26
          ?*/
          ?package?org.bromon.mail;
          ?import?javax.mail.*;
          ?import?java.util.*;
          ?import?javax.mail.internet.*;

          ?/**
          ?*?@author?Bromon
          ?*/
          ?public?class?SenderWithSMTPVer
          ?{
          ?String?host="";
          ?String?user="";
          ?String?password="";

          ?public?void?setHost(String?host)
          ?{
          ??this.host=host;
          ?}

          ?public?void?setAccount(String?user,String?password)
          ?{
          ??this.user=user;
          ??this.password=password;
          ?}

          ?public?void?send(String?from,String?to,String?subject,String?content)
          ?{
          ??Properties?props?=?new?Properties();
          ??props.put("mail.smtp.host",?host);//指定SMTP服務器
          ??props.put("mail.smtp.auth",?"true");//指定是否需要SMTP驗證
          ??try
          ??{
          ???Session?mailSession?=?Session.getDefaultInstance(props);
          ???
          ???mailSession.setDebug(true);//是否在控制臺顯示debug信息
          ???
          ???Message?message=new?MimeMessage(mailSession);
          ???message.setFrom(new?InternetAddress(from));//發件人
          ???message.addRecipient(Message.RecipientType.TO,new?InternetAddress(to));//收件人
          ???
          ???message.setSubject(subject);//郵件主題
          ???message.setText(content);//郵件內容
          ???message.saveChanges();
          ???
          ???Transport?transport?=?mailSession.getTransport("smtp");
          ???transport.connect(host,?user,?password);
          ???transport.sendMessage(message,?message.getAllRecipients());
          ???transport.close();
          ??}catch(Exception?e)
          ??{
          ???System.out.println(e);
          ??}
          ??
          ?}

          ?public?static?void?main(String?args[])
          ?{
          ??SenderWithSMTPVer?sm=new?SenderWithSMTPVer();

          ??sm.setHost("smtp.163.com");//指定要使用的郵件服務器
          ??sm.setAccount("abc","123");//指定帳號和密碼

          ??/*
          ?*?@param?String?發件人的地址
          ???*?@param?String?收件人地址
          ???*?@param?String?郵件標題
          ???*?@param?String?郵件正文
          ??*/
          ??sm.send("abc@163.com","bromon@163.com","標題","內容");
          ?}

          ?}?


          ?這段程序好像也不需要解釋了吧,把SMTP地址、帳號、密碼等配置信息寫到Properties里面,Java里面很多API都需要這么干,比如再程序中加入對代理服務器的支持等。

          ?上面的程序修改一下服務器地址、帳號、密碼就可以使用,非常簡單。

          ?如何發送一個HTML格式的Email呢?也很簡單,再郵件正文中寫入HTML代碼,然后指定郵件的ContentType就OK,下面只給出關鍵代碼:

          ?………..
          ?MimeMessage?msg=new?MimeMessage(mailSession);
          ?msg.setContent(content,"text/html");
          ?msg.setText(“<html><body><h1>下面的,你們好嗎?</body></html>”);
          ?………..

          ?下面是發送帶有附件的email,稍微復雜一點,而且和前面的程序有一些不同,請仔細一點,同時需要一點IO的知識。相同的代碼就不在列出,只寫關鍵部分,誰都想偷懶不是?

          ?import?javax.mail.*;
          ?import?javax.mail.internet.*;
          ?import?javax.activation.*;
          ?import?java.util.*;
          ?……….
          ?MimeMessage?msg=new?MimeMessage(mailSession);
          ?msg.setSentDate(new?Date());
          ?msg.setSubject("hello");

          ?MimeBodyPart?textBodyPart=new?MimeBodyPart();
          ?textBodyPart.setText(“郵件正文”);

          ?MimeBodyPart?fileBodyPart=new?MimeBodyPart();
          ?FileDataSource?fds=new?FileDataSource("GIS.rar");//要發送的附件
          ?fileBodyPart.setDataHandler(new?DataHandler(fds));
          ?fileBodyPart.setFileName(fds.getName());
          ?Multipart?container=new?MimeMultipart();
          ?container.addBodyPart(textBodyPart);
          ?container.addBodyPart(fileBodyPart);
          ?msg.setContent(container);
          ?Transport.send(msg);
          ?…………?


          ?這里的msg由兩個MimeBodyPart構成,這個東西解釋起來基本上比較難,如果不了解相關的規范就不太好解釋,如果了解的話,我就不用解釋了,這個這個………唉。

          二、?郵件的收取

          ?通常情況下我們都使用pop3協議來收郵件,IMAP嘛現在就不涉及了。收郵件的功能雖然我用了很多時間才基本搞清楚,不過講起來就so?easy了,一個程序就可以基本包括。

          ?郵件大致可以分三種:純文本郵件、含有其他數據的文本郵件、含有附件的郵件。


          ?CODE??
          ?/*
          ?*?Created?on?2004-4-26
          ?*/
          ?package?org.bromon.mail;
          ?import?javax.mail.*;
          ?import?java.util.*;
          ?import?java.io.*;

          ?/**
          ?*?@author?Bromon
          ?*/
          ?public?class?Receiver
          ?{
          ?Folder?inbox;
          ?Store?store;

          ?//連接郵件服務器,獲得所有郵件的列表
          ?public?Message[]?getMail(String?host,String?name,String?password)?throws?Exception
          ?{
          ??Properties?prop=new?Properties();
          ??prop.put("mail.pop3.host",host);
          ??Session?session=Session.getDefaultInstance(prop);
          ??store=session.getStore("pop3");
          ??store.connect(host,name,password);
          ??
          ??inbox=store.getDefaultFolder().getFolder("INBOX");
          ??inbox.open(Folder.READ_ONLY);
          ??
          ??Message[]?msg=inbox.getMessages();
          ??
          ??FetchProfile?profile=new?FetchProfile();
          ??profile.add(FetchProfile.Item.ENVELOPE);
          ??inbox.fetch(msg,profile);
          ??
          ??return(msg);
          ?}

          ?//處理任何一種郵件都需要的方法
          ?private?void?handle(Message?msg)?throws?Exception
          ?{
          ??System.out.println("郵件主題:"+msg.getSubject());
          ??System.out.println("郵件作者:"+msg.getFrom()[0].toString());
          ??System.out.println("發送日期:"+msg.getSentDate());
          ?}

          ?//處理文本郵件
          ?public?void?handleText(Message?msg)?throws?Exception
          ?{
          ??this.handle(msg);
          ??System.out.println("郵件內容:"+msg.getContent());
          ?}

          ?//處理Multipart郵件,包括了保存附件的功能
          ?public?void?handleMultipart(Message?msg)?throws?Exception
          ?{
          ??String?disposition;
          ??BodyPart?part;
          ??
          ??Multipart?mp=(Multipart)msg.getContent();
          ??int?mpCount=mp.getCount();//Miltipart的數量,用于除了多個part,比如多個附件
          ??for(int?m=0;m<mpCount;m++)
          ??{
          ???this.handle(msg);
          ???
          ???part=mp.getBodyPart(m);
          ???disposition=part.getDisposition();
          ???if(disposition!=null?&&?disposition.equals(Part.ATTACHMENT))//判斷是否有附件
          ???{
          ????//this.saveAttach(part);//這個方法負責保存附件,注釋掉是因為附件可能有病毒,請清理信箱之后再取掉注釋
          ???}else{
          ????System.out.println(part.getContent());
          ???}
          ??}
          ?}

          ?private?void?saveAttach(BodyPart?part)?throws?Exception
          ?{
          ??String?temp=part.getFileName();//得到未經處理的附件名字
          ??String?s=temp.substring(11,temp.indexOf("?=")-1);//去到header和footer
          ??
          ??//文件名一般都經過了base64編碼,下面是解碼
          ??String?fileName=this.base64Decoder(s);
          ??System.out.println("有附件:"+fileName);
          ??
          ??InputStream?in=part.getInputStream();
          ??FileOutputStream?writer=new?FileOutputStream(new?File(fileName));
          ??byte[]?content=new?byte[255];
          ??int?read=0;
          ??while((read=in.read(content))!=-1)
          ??{
          ???writer.write(content);
          ??}
          ??writer.close();
          ??in.close();
          ?}

          ?//base64解碼
          ?private?String?base64Decoder(String?s)?throws?Exception
          ?{
          ??sun.misc.BASE64Decoder?decoder?=?new?sun.misc.BASE64Decoder();
          ??byte[]?b=decoder.decodeBuffer(s);
          ??
          ??return(new?String(b));
          ?}

          ?//關閉連接
          ?public?void?close()?throws?Exception
          ?{
          ??if(inbox!=null)
          ??{
          ???inbox.close(false);
          ??}
          ??
          ??if(store!=null)
          ??{
          ???store.close();
          ??}
          ?}

          ?public?static?void?main(String?args[])
          ?{
          ??String?host="pop.163.com";
          ??String?name="bromon";
          ??String?password="My?password";
          ??
          ??Receiver?receiver=new?Receiver();
          ??
          ??try
          ??{???
          ???Message[]?msg=receiver.getMail(host,name,password);
          ???
          ???for(int?i=0;i<msg.length;i++)
          ???{
          ????if(msg[i].isMimeType("text/*"))//判斷郵件類型
          ????{
          ?????receiver.handleText(msg[i]);
          ????}else{
          ?????receiver.handleMultipart(msg[i]);
          ????}
          ????System.out.println("****************************");
          ???}
          ???receiver.close();
          ??}catch(Exception?e)
          ??{
          ???System.out.println(e);
          ??}
          ?}
          ?}?


          ? 沒有習慣讀java代碼的兄弟可能會覺得麻煩了一點,其中有個小問題,下載的附件會再文件名后面加上一個”#”符號,不知道這是javamail的特別處理還是pop3的規范。通過程序更改文件名很簡單,就不說了。對于email還有很多其他的操作,可以自己取查看一下javadoc,我就不影響大家探索的樂趣了。在Properties里配置代理服務器,可以讓程序通過代理收發郵件,一般的HTTP、socks?4、socks?5都支持。

          posted @ 2006-10-19 16:10 風中的舞者 閱讀(386) | 評論 (0)編輯 收藏
          http://www.dokeos.com/howto.php
          posted @ 2006-09-19 20:51 風中的舞者 閱讀(373) | 評論 (0)編輯 收藏
          s
          posted @ 2006-08-12 17:26 風中的舞者 閱讀(354) | 評論 (1)編輯 收藏
          在CMP實體BEAN中使用BLOB數據類型
          2005-07-19? ?來源:matrix.org.cn ?作者:matrix.org.cn
          摘要:
          在Oracle這樣的關系數據庫中,CLOB和BLOB類型被用來存放大對象。BOLB表示二進制大對象,這種數據類型通過用來保存圖片,圖象,視頻等。CLOB表示字符大對象,能夠存放大量基于字符的數據。JDBC定義java類型java.sql.Clob 和java.sql.Blob 對應數據庫中的CLOB和BLOB類型。然而這兩種類型并不能在實體BEAN中使用,因為這兩個類沒有被序列化(Serializable)。因此我們不能在CMP實體BEAN中定義java.sql.Clob或java.sql.Bl


          在Oracle這樣的關系數據庫中,CLOB和BLOB類型被用來存放大對象。BOLB表示二進制大對象,這種數據類型通過用來保存圖片,圖象,視頻等。CLOB表示字符大對象,能夠存放大量基于字符的數據。

          JDBC定義java類型java.sql.Clob 和java.sql.Blob 對應數據庫中的CLOB和BLOB類型。然而這兩種類型并不能在實體BEAN中使用,因為這兩個類沒有被序列化(Serializable)。因此我們不能在CMP實體BEAN中定義java.sql.Clob或java.sql.Blob這兩種數據類型。

          如果我們要使用數據庫的BLOB字段,我們必須在實體bean中聲明CMP字段為 byte[] 并映射該字段到數據庫的BLOB字段。如果要使用CLOB字段,我們需要使用定義CMP字段為 java.lang.String or char[] 。

          一個ENTITY的范例
          在一個企業里,處于安全考慮,我們也許要將員工的圖片保存到數據庫中的表里。這里我們使用EmployeePicture 作為范例來代表員工的圖片實體。這個EmployeePictureBean CMP有兩個屬性 empno, picture。 picture 字段被定義成byte[]型 。

          該EmployeePicture實體BEAN被映射到EMPPIC數據表, picture 屬性被映射為EMPPIC 表中的picture 字段,該picture字段是定義為BLOB類型的。

          下面是EmployeePictureBean.java的部分核心代碼:

          public abstract class EmployeePictureBean implements EntityBean
          {
          ? ....
          ? public abstract byte[] getPicture();
          ? public abstract void setPicture(byte[] newPicture);
          ? public Long ejbCreate(Long empno, byte[] newPicture)
          ? {
          ? ? setEmpno(empno);
          ? ? setPicture(newPicture);
          ? ? return empno;
          ? }

          ? public void ejbPostCreate(Long empno, byte[] newPicture)
          ? {
          ? }
          ? ...
          }


          如果我們使用OC4J 9.0.4 ,就需要在orion-ejb-jar.xml中定義實體BEAN屬性到數據表字段的映射。如果使用了其他J2EE容器,就需要在相關廠商的部署描述符中定義O-R映射。下面演示在OC4J中的映射代碼:

          <entity-deployment name="EmployeePicture" data-source="jdbc/OracleDS" table="EMPPIC">
          ? <primkey-mapping>
          ? ? <cmp-field-mapping name="empno" persistence-name="EMPNO" persistence-type="NUMBER(8)"/>
          ? </primkey-mapping>
          ? <cmp-field-mapping name="empno" persistence-name="EMPNO" persistence-type="NUMBER(8)"/>
          ? <cmp-field-mapping name="picture" persistence-name="PICTURE" persistence-type="BLOB"/>
          </entity-deployment>



          客戶端:
          CMP實體BEAN的客戶端沒有什么特別的處理。唯一需要注意的是在update數據表時要使用BufferedInputStream 來讀取IMAGE文件,但在檢索數據表時使用OutputStream 。

          下面演示如何讀取一個IMAGE文件,并創建一個BEAN實例:

           // Locate and open the file

          ? ? File imgFile = new File(fileName);

          ? ? long imgFileSize= imgFile.length();

          ? ? // initialize the byte array

          ? ? byte byteValue[] = new byte[(int)imgFileSize];

          ? ? // Read the file into the byte array

          ? ? InputStream is = new BufferedInputStream(new FileInputStream(imgFile));

          ? ? int len = is.read(byteValue);

          ? ? //Add the byte to the entity bean field

          ? ? if(len!=imgFileSize)

          ? ? {

          ? ? ? ? ? ?System.out.println("Read bytes did not equal file size on directory");

          ? ? }

          ? ? else

          ? ? {

          ? ? ? EmployeePictureLocal employeePicture = empHome.create(empNo , byteValue);

          posted @ 2006-06-19 23:51 風中的舞者 閱讀(294) | 評論 (0)編輯 收藏
          weblogic.jdbc.oracle.OracleDriver

          在weblogic 的控制臺下建的連接池,數據源在workshop中無法建實體bean,
          但在workshop中的卻可以。關鍵就是要修改驅動程序如上。
          posted @ 2006-06-17 08:58 風中的舞者 閱讀(230) | 評論 (0)編輯 收藏

          http://www.onlinedown.net/soft/40251.htm

          posted @ 2006-03-27 21:08 風中的舞者 閱讀(216) | 評論 (1)編輯 收藏

          在routeros中,每一個ppoe用戶撥號成功后,都會在服務器上產生一個接口。我們可以在防火墻中阻擋掉對原來數據的轉發,
          iptables -A FORWARD -i ether1 -j DROP
          從而要求用戶必須撥號上網

          或者只對ppoe客戶的地址段進行nat masqu....。只對其地址池。我想沒有撥號的,私自設置地址應不可上網。

          posted @ 2006-03-21 20:25 風中的舞者 閱讀(243) | 評論 (0)編輯 收藏
          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          java技術

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 马边| 灵宝市| 保定市| 宿松县| 嫩江县| 金昌市| 岳普湖县| 买车| 象州县| 宁陵县| 巴彦县| 瓦房店市| 佳木斯市| 绥中县| 措勤县| 玉山县| 白银市| 梧州市| 云林县| 灌阳县| 宣威市| 林甸县| 南丹县| 介休市| 南通市| 石泉县| 高阳县| 灯塔市| 龙州县| 定边县| 女性| 西乌珠穆沁旗| 彩票| 巴里| 玉林市| 昌乐县| 汤原县| 陇南市| 扶风县| 邻水| 芜湖县|