欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

eclipse + JBoss 5 + EJB3開發指南(1):編寫

系統 2651 0
本文為原創,如需轉載,請注明作者和出處,謝謝!

本系列教程使用的軟件版本如下:
Eclipse:3.4.2, Eclipse IDE for Java EE Developers
JBoss :5.0.1, http://www.jboss.org/jbossas/downloads/
JDK:1.6.0.14, http://java.sun.com/javase/downloads/index.jsp

在本文中將編寫一個簡單的無狀態SessionBean。在發布EJB時,一般需要將EJB程序以jar文件的形式進行發布。這些jar文件將被放在<JBoss安裝目錄>\server\default\deploy目錄中。如果在Eclipse中開發EJB程序,需要進行一些配置。首選需要在首選項(Preferences)對話框中設置JBoss的安裝目錄(如D:\jboss5)。然后在運行配置對話框中添加jboss的運行項。在jboss4.2及以后的版本中,默認情況下jboss只接收來自localhost或127.0.0.1的請求,也就是只接收本地的訪問。為了使jboss接收來自其他地址的請求,在啟動jboss時需要使用-b命令行參數進行設置。如下面的啟動命令所示:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> run.bat-b 200.200.200.123
run.bat-b
0.0.0.0

上面的第一行命令表示jboss可以接收來自200.200.200.123的請求。第二條命令表示jboss可以接收來自任意地址的請求。如果不設置-b參數,以非本機方式訪問EJB時,JBoss會拋出如下異常:

Exception in thread "main" javax.naming.CommunicationException: Could not obtain connection to any of these urls: 192.168.17.105:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server /192.168.17.105:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /192.168.17.105:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1725)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:689)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at test.Client.main(Client.java:29)
... ...


一、配置開發環境

在eclipse中進行開發,也需要設置-b命令行參數。在運行配置對話框中可以按著圖1的方式設置-b命令行參數。

圖1

二、開發無狀態Session Bean

在Eclipse中開發EJB程序首先需要建立一個EJB Project(工程名為MyEJB)。然后建立一個接口(遠程接口)和一個Session Bean。遠程接口的代碼如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package service;

import java.util.List;
import javax.ejb.Remote;
import entity.Greeting;

@Remote
public interface Greeter
{
public Stringgreet(Stringmessage);
public List < Greeting > getAllGreetings();
}

在上面的代碼中使用了@Remote注釋將Greeter接口定義為遠程接口,也就是在其他的客戶端機器上可以通過該接口來訪問本地的Session Bean。在Greeter接口中還使用了一個Greeting類,該類的代碼如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package entity;

import java.io.Serializable;

public class Greeting implements Serializable
{
private int id;
private Stringname;
public int getId()
{
return id;
}
public void setId( int id)
{
this .id = id;
}
public StringgetName()
{
return name;
}
public void setName(Stringname)
{
this .name = name;
}
}

要注意的是,由于Greeting類在實例將被傳輸到客戶端,因此,該類需要實現java.io.Serializable接口。
下面來編寫Session Bean,代碼如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package service;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import entity.Greeting;

@Stateless
public class GreeterBean implements Greeter
{
@Override
public List < Greeting > getAllGreetings()
{

List
< Greeting > greetings = new ArrayList < Greeting > ();
Greetinggreeting
= new Greeting();
greeting.setId(
12 );
greeting.setName(
" billgates " );
greetings.add(greeting);
greeting
= new Greeting();
greeting.setId(
334 );
greeting.setName(
" 李寧 " );
greetings.add(greeting);
return greetings;
}

@Override
public Stringgreet(Stringmessage)
{
return " 您好 " + message;
}

}

在上面的代碼中使用了@Stateless注釋將GreeterBean類定義為無狀態的Session Bean。如果JBoss正處于啟動狀態,并保存上面寫的類和接口,Eclipse會自動將上面的代碼編譯,并生成jar文件,發布到jboss的deploy目錄中。該jar文件的目錄結構如下:

MyEJB.jar
entity\Greeting.class
service\Greeter.class
service\GreeterBean.class
META-INF\MANIFEST.MF
META-INF\jboss.xml

其中META-INF目錄中的兩個文件是Eclipse在建立EJB工程時自動生成的,我們不用去管它。讀者也可以手工去編譯上面的接口和類,并使用jar命令生成jar文件。

三、編寫客戶端程序

由于本文使用了遠程接口來訪問Session Bean,因此,在訪問時需要指定EJB所有的機器的IP地址。
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package test;

import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import service.Greeter;

public class Client
{

public static void main(String[]args) throws Exception
{
Propertiesprop
= new Properties();

// 設置相關的屬性值

prop.setProperty(Context.PROVIDER_URL, " 192.168.17.105:1099 " );
prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,
" org.jnp.interfaces.NamingContextFactory " );
InitialContextctx
= new InitialContext(prop);

// 開始調用Greeter接口的方法

Greetergreeter = (Greeter)ctx.lookup( " GreeterBean/remote " );
System.out.println(greeter.greet(
" 李寧 " ));
System.out.println(greeter.getAllGreetings().get(
0 ).getName());
}
}

在上面的代碼中,使用了Context.PROVIDER_URL設置了服務端的IP和端口號。
上面積代碼的運行結果如:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 您好李寧
billgates

除了在程序中設置屬性值外,也可以通過jndi.properties文件進行設置。該文件應放在Eclipse工程的src目錄中。該文件的內容如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory
java.naming.provider.url
=192.168.17.105 : 1099

如果使用jndi.properties文件,就不需要在客戶端程序中設置相應的屬性值了,因此,可以使用如下的代碼來調用Session Bean:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package test;

import javax.naming.Context;
import javax.naming.InitialContext;
import service.Greeter;

public class Client
{

public static void main(String[]args) throws Exception
{
// 不需要在程序中設置相應的屬性值
InitialContextctx = new InitialContext();
// 開始調用Greeter接口的方法
Greetergreeter
= (Greeter)ctx.lookup( " GreeterBean/remote " );
System.out.println(greeter.greet(
" 李寧 " ));
System.out.println(greeter.getAllGreetings().get(
0 ).getName());
}
}

注意:在編寫客戶端程序時,需要引用<JBoss安裝目錄>\client目錄中的所有jar文件。

下一篇: eclipse + JBoss 5 + EJB3開發指南(2):編寫有狀態的SessionBean


國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!

《銀河系列原創教程》 發布

《Java Web開發速學寶典》 出版,歡迎定購

eclipse + JBoss 5 + EJB3開發指南(1):編寫第一個無狀態的SessionBean


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产婷婷综合 | 91精品久久久久久久久久 | 日本高清视频在线播放 | 国产成人理在线观看视频 | 亚洲黄色免费 | 亚洲黄色片在线观看 | 中文字幕精品一区二区三区精品 | 美女高潮网站 | 国产一区二区小早川怜子 | 欧美伊人 | 国产91对白叫床清晰播放 | 免费的色网站 | 亚洲精品午夜视频 | 男女久久久 | 成人黄色免费网站 | 久久久久久国产精品久久 | 国产精品爽爽va在线观看网站 | 91精品国产一区二区三区蜜臀 | 日韩欧美精品综合一区二区三区 | 欧美一区二 | 国产精品.XX视频.XXTV | 久久精品一区二区三区四区 | 毛片毛片毛片毛片毛片毛片 | 亚洲午夜精品视频 | 窝窝午夜精品一区二区 | 日韩免费网站 | 久久久久日韩精品免费观看网 | 香蕉福利久久福利久久香蕉 | 少年班江依琳 | 热99精品| 色网站在线视频 | 亚洲精品久久久久无码AV片软件 | 久久亚洲私人国产精品 | 天天爽夜夜爽夜夜爽 | 91精品国产日韩91久久久久久 | 亚洲精品一区二区深夜福利 | 91香蕉嫩草 | 97色伦图片97综合影院 | 亚洲日韩中文字幕一区 | 超级成人97碰碰碰免费 | 天天综合色天天综合 |