JBoss AS 7 EJB3池配置

現在,AS 7.0.1已經發布,讓我們看一下可用的EJB3新功能。 就像我在上一篇文章中提到的那樣 ,AS 7.0.1現在允許您為無狀態會話bean和MDB配置池。

當前,我們允許在子系統級別配置池,這意味著該池將適用于服務器上部署的所有Bean。 在一些即將發布的版本中,我們將允許在單個部署和單個Bean級別上配置池。 現在,讓我們看看子系統級別的配置。

在我以前的文章中,我提到AS 7.0.1有2個發行版。 一個純粹是webprofile,另一個(稱為“ everything”)具有其他EE功能,例如對MDB的支持。 在本文中,我將使用“ Everything”發行版和JBOSS_HOME / standalone / configurations / standalone-preview.xml來解釋配置。

在開始配置之前,對于不熟悉AS7的那些人,讓我們看看如何使用特定的配置文件啟動服務器。 首先,下載服務器,然后將二進制文件解壓縮到您選擇的文件夾中。 然后從命令提示符下,移至安裝的“ bin”文件夾。 在此文件夾中,您將看到standalone.bat / standalone.sh和domain.bat / domain.sh。 在本文中,我們將專注于獨立服務器,但是對于域配置中的EJB3子系統也是如此。

啟動獨立服務器

因此,讓我們啟動服務器。 我在Linux系統上,因此我將使用standalone.sh文件。 在Windows上,您必須使用standalone.bat。

jpai@jpai-laptop:bin$ ./standalone.sh

在大約幾秒鐘內,您將看到服務器已啟動并正在運行:

jpai@jpai-laptop:bin$ ./standalone.sh  =========================================================================  JBoss Bootstrap Environment  JBOSS_HOME: /NotBackedUp/jpai/jboss-as-7.0.1.Final  JAVA: /opt/Java/SunJava-6/jdk1.6.0_21//bin/java  JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman  =========================================================================  09:30:31,537 INFO [org.jboss.modules] JBoss Modules version 1.0.1.GA  09:30:31,765 INFO [org.jboss.msc] JBoss MSC version 1.0.0.GA  09:30:31,818 INFO [org.jboss.as] JBoss AS 7.0.1.Final "Zap" starting  09:30:32,618 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.  09:30:32,693 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)  09:30:32,694 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.  09:30:32,703 INFO [org.jboss.as.logging] Removing bootstrap log handlers  09:30:32,720 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)  09:30:32,739 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.  09:30:32,905 INFO [org.jboss.as.naming] (Controller Boot Thread) Activating Naming Subsystem  09:30:32,915 INFO [org.jboss.as.naming] (MSC service thread 1-1) Starting Naming Service  09:30:32,918 INFO [org.jboss.as.osgi] (Controller Boot Thread) Activating OSGi Subsystem  09:30:32,940 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem  09:30:32,957 INFO [org.jboss.remoting] (MSC service thread 1-4) JBoss Remoting version 3.2.0.Beta2  09:30:32,968 INFO [org.xnio] (MSC service thread 1-4) XNIO Version 3.0.0.Beta3  09:30:32,982 INFO [org.xnio.nio] (MSC service thread 1-4) XNIO NIO Implementation Version 3.0.0.Beta3  09:30:33,182 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-4) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/Java/SunJava-6/jdk1.6.0_21/jre/lib/i386/server:/opt/Java/SunJava-6/jdk1.6.0_21/jre/lib/i386:/opt/Java/SunJava-6/jdk1.6.0_21/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib  09:30:33,203 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-2) Starting remote JMX connector  09:30:33,209 INFO [org.jboss.as.remoting] (MSC service thread 1-1) Listening on /127.0.0.1:9999  09:30:33,232 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem  09:30:33,390 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-4) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080  09:30:33,512 INFO [org.jboss.as.connector] (MSC service thread 1-1) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)  09:30:33,554 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) Bound data source [java:jboss/datasources/ExampleDS]  09:30:33,919 INFO [org.jboss.as.deployment] (MSC service thread 1-4) Started FileSystemDeploymentService for directory /NotBackedUp/jpai/jboss-as-7.0.1.Final/standalone/deployments  09:30:33,931 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.1.Final "Zap" started in 2636ms - Started 93 of 148 services (55 services are passive or on-demand)

使用其他服務器配置文件

默認情況下,standalone.sh命令使用名為“ standalone.xml”的配置文件,該文件位于JBOSS_HOME / standalone / configuration文件夾中。 該命令還允許您指定其他配置文件以啟動服務器。 如前所述,我將在本文中使用standalone-preview.xml。 因此,讓我們使用standalone-preview.xml啟動服務器。

jpai@jpai-laptop:bin$ ./standalone.sh -server-config=standalone-preview.xml

如您所見,我們傳遞了-server-config參數,其中standalone-preview.xml作為參數值。 默認情況下,在JBOSS_HOME / standalone / configuration文件夾中查找文件。 服務器在大約3.5秒內啟動:

09:35:59,694 INFO  [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.1.Final "Zap" started in 3586ms - Started 125 of 184 services (59 services are passive or on-demand)

EJB3子系統配置

現在,我們已經了解了如何啟動服務器,讓我們繼續查看配置。 在standalone-preview.xml中,查找如下所示的EJB3子系統:

<subsystem xmlns="urn:jboss:domain:ejb3:1.1" >  <timer-service>  <thread-pool core-threads="1" max-threads="4" />  <data-store path="timer-service-data" relative-to="jboss.server.data.dir" />  </timer-service>  <!-- EJB3 pools -->  <pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  </bean-instance-pools>  </pools>  <!-- Default MDB configurations -->  <mdb>  <resource-adapter-ref resource-adapter-name="hornetq-ra"/>  <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>  </mdb>  <!-- Session bean configurations -->  <session-bean>  <stateless>  <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>  </stateless>  </session-bean>  </subsystem>

這是EJB3子系統級別配置所在的位置。 讓我們快速看一下其中的一些。 第一個配置是針對EJB3定時器服務的。 在本文中,我們不會對此進行過多的介紹。

EJB3池

下一個配置是“池”:

<!-- EJB3 pools -->  <pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  </bean-instance-pools>  </pools>

在這里配置EJB3使用的池。 在“ pools”元素中,可以使用“ bean-instance-pools”元素配置bean實例池。 在AS 7.0.1中,我們僅支持“ strict-max-pool”作為bean實例池。

嚴格的最大池允許您配置池的最大上限。 在運行時,當池中的所有bean實例都在使用中并且新的bean調用請求進入時,池將阻塞該請求,直到下一個bean實例可用或超時(在instance-acquisition-timeout中設置)為止。 每個池都有一個唯一的名稱。 上面的配置顯示2個嚴格的最大池,分別名為“ slsb-strict-max-pool”和“ mdb-strict-max-pool”。 您可以在其中添加新的嚴格最大池,并為其選擇唯一的名稱。 您可以手動編輯xml(服務器關閉時)以添加新的嚴格最大池,也可以使用AS7隨附的命令行客戶端(CLI)。 在本文后面的內容中,我們將介紹如何使用CLI。

消息驅動的Bean配置

現在,讓我們轉到該EJB3子系統中的下一個配置:

<!-- Default MDB configurations -->  <mdb>  <resource-adapter-ref resource-adapter-name="hornetq-ra"/>  <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>  </mdb>

本節使用默認值配置MDB。

MDB的默認資源適配器

“ resource-adapter-ref”元素指定MDB將使用的默認資源適配器。 在此示例中,它表明我們使用hornetq-ra作為默認RA。


MDB的默認bean實例池

bean-instance-pool-ref充當對bean-instance-pool的引用,它將用作所有MDB的默認池配置。 在此示例中,我們看到它指向“ mdb-strict-max-pool”,我們在前面的部分中看到它被配置為嚴格的最大池,其中池的上限為20。 如果要更改MDB的默認bean實例池,則只需將bean-instance-pool-ref元素的pool-name屬性更改為其他可用的bean實例池。 您可以通過直接編輯xml(在服務器關閉時)來執行此操作,也可以使用CLI來執行此操作(稍后將看到如何完成此操作)。

無狀態會話Bean配置

轉到EJB3配置的下一部分,您將看到:

<!-- Session bean configurations -->  <session-bean>  <stateless>  <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>  </stateless>  </session-bean>

在這里配置會話Bean的默認值。 就像我們在MDB中看到的一樣,以上配置顯示了如何為無狀態會話Bean配置默認Bean實例池。 在這里,我們看到“ slsb-strict-max-pool”被用作默認值。 就像MDB一樣,您可以通過直接在xml中或通過CLI更改bean-instance-pool-ref元素的pool-name屬性,來更改無狀態會話bean的默認bean實例池。

使用命令行客戶端(CLI)

AS7帶有功能強大的命令行客戶端。 查看CLI上的AS7文檔以獲取快速參考。 命令行客戶端工具是使用JBOSS_HOME / bin文件夾中的jboss-admin.sh/jboss-admin.bat腳本啟動的:

jpai@jpai-laptop:bin$ ./jboss-admin.sh

在運行該腳本時,您會注意到以下消息,該消息使您可以連接到服務器:

You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.  [disconnected /]

CLI需要運行中的服務器才能連接。 因此,如果您尚未啟動服務器,請先啟動它(如上一節中所述)。 現在,讓我們通過命令行連接到服務器:

[disconnected /] connect  Connected to standalone controller at localhost:9999  [standalone@localhost:9999 /]

因此,CLI現在已連接到正在9999端口上監聽localhost的服務器。可以為CLI傳遞不同的主機名和端口以進行連接,但現在就不要再討論了。

從CLI連接到服務器后,現在就可以從CLI運行操作來管理正在運行的服務器。 現在讓我們看一下如何管理EJB3子系統的bean實例池配置。

從CLI創建一個新的strict max bean實例池

從CLI連接到服務器后,可以按以下方式創建一個新的strict max bean實例池:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=new-pool:add

我建議您閱讀CLI文檔,以更好地了解該命令。 但是,讓我簡要地分解上面的命令并解釋每個部分的作用。

需要注意的重要一點是,您不必在CLI上鍵入所有這些內容。 CLI提供了非常非常有用的制表符完成功能! 因此,輸入/ subsystem =并按下選項卡將顯示可用的選項。

了解Bean實例池創建命令

從CLI文檔:

操作請求基本上由三部分組成:地址,操作名稱和一組可選參數。

操作請求的正式規范為:

[/node-type=node-name (/node-type=node-name)*] : operation-name [( [parameter-name=parameter-value (,parameter-name=parameter-value)*] )]

在此示例中,我們的目標是創建一個新的strict max bean實例池。 這可以通過發出“添加”操作來完成。 在我上面發布的命令中,請注意最后使用“:add”。 操作始終以“:”開頭,后跟操作名稱。 因此,在上面的示例中,我們正在執行“:add”操作。

現在,必須在特定的“資源”上執行“添加”操作。 即服務器必須知道要添加什么以及在哪里。 這稱為尋址。 為了運行操作,需要提供一個地址(不要將此與服務器的主機名/端口“地址”混淆,這是完全不同的)。 用AS7管理術語來說,服務器由可管理的“資源”組成,每個資源都有其自己的地址。 例如,可以解決組成服務器配置的每個子系統。 要從命令行客戶端引用ejb3子系統,請使用/ subsystem = ejb3(可以使用制表符補全)。

假設我們正在創建的新池將被命名為“新池”。 因此,最終需要執行“添加”操作的地址如下所示:

/subsystem=ejb3/strict-max-bean-instance-pool=new-pool

最后,我們將地址和操作結合起來并從CLI運行它

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=new-pool:add

操作成功完成后,將顯示以下輸出:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=new-pool:add  {"outcome" => "success"}

所有管理操作都保留在服務器配置文件中。 在我們的例子中,它是standalone-preview.xml,因為這是我們用來啟動服務器的文件。

運行該操作之后,您現在可以在文本編輯器中打開standalone-preview.xml并注意,已將名為“ new-pool”的新的嚴格的最大bean實例池添加到“ bean-instance-pools”中:

<pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="new-pool"/>  </bean-instance-pools>  </pools>

尚未設置max-pool-size和其他屬性,將使用默認值。 這是因為在運行操作時,我們沒有為這些屬性指定任何值。 現在,讓我們嘗試發出命令來創建一個具有某些特定屬性值的池(名為“ take2”)。 現在,該命令將如下所示:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=take2:add(max-pool-size=15,timeout=2)

因此,上面的命令與上一個命令相似,除了池的名稱為“ take2”,并且我們另外指定了最大池大小為15和超時為2并將timeout-unit為默認值。 請注意,編寫該命令時可以使用制表符補全。 運行該命令時,您將看到以下輸出:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=take2:add(max-pool-size=15,timeout=2)  {"outcome" => "success"}

現在,standalone-preview.xml如下所示:

<pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="new-pool"/>  <strict-max-pool name="take2" max-pool-size="15" instance-acquisition-timeout="2"/>  </bean-instance-pools>  </pools>

請注意,“ take2”池的max-pool-size和instance-acquisition-timeout值設置為我們在CLI上指定的值。

這樣便可以通過CLI創建新的bean實例池。

設置/更改MDB和SLSB使用的默認bean實例池

在上一節中,我們看到了如何創建一個新的bean實例池。 現在,如果我們希望這個新池成為MDB和/或SLSB的默認池配置,那么我們可以使用CLI來做到這一點。

首先讓我們看看如何對MDB進行操作:

[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name=default-mdb-instance-pool, value=take2)

因此,我們正在/ subsystem = ejb3地址上執行“寫屬性”操作,以寫入名為“ default-mdb-instance-pool”的屬性,其值為“ take2”。 有效地,此命令將從“ mdb-strict-max-pool”更改默認的MDB bean實例池(請記住,我們之前在standalone-preview.xml中的bean-instance-pool-ref部分中看到了這一點。 MDB)到我們創建的“ take2”池。 運行此命令將顯示以下輸出

[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name=default-mdb-instance-pool, value=take2)  {"outcome" => "success"}

現在,如果在文本編輯器中打開standalone-preview.xml,您將注意到更改已完成– MDB配置現在將“ take2”用作所有MDB的默認池配置(此后)。

<mdb>  <resource-adapter-ref resource-adapter-name="hornetq-ra"/>  <bean-instance-pool-ref pool-name="take2"/>  </mdb>

我們也可以對無狀態會話Bean配置執行相同的操作。 該命令是:

[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name=default-slsb-instance-pool, value=new-pool)  {"outcome" => "success"}

在這里,我們將default-slsb-instance-pool設置為我們先前創建的“ new-pool”。 現在,standalone-preview.xml文件將如下所示:

<session-bean>  <stateless>  <bean-instance-pool-ref pool-name="new-pool"/>  </stateless>  </session-bean>

就是這樣了! 現在,我們已經使用CLI來配置/管理EJB3池。

禁用MDB和無狀態會話Bean的池

我們還允許為MDB和SLSB禁用池。 但是,并不總是建議這樣做,因為它可能會影響性能。 如果作為開發人員,您知道您的bean在構造期間不會太重(即,在構造函數中沒有任何負擔,在@PostConstruct中沒有任何負擔),那么有時它有助于禁用對bean的合并。 當前,唯一的方法是從EJB3子系統配置中的和/或元素中刪除該元素。 目前,我們尚無法通過CLI進行此操作,也無法在每個部署或每個bean級別上指定此方法。

因此,如果您知道禁用池化將使您受益,那么這就是禁用它的方法。

摘要

我沒想到這個博客會花那么長的時間。 但是由于其中大多數是AS7中的新功能,因此值得編寫。 因此,在此博客中,我們了解了如何配置EJB3 bean實例池以及在何處配置EJB3實例池,如何創建新的bean實例池,如何為MDB和無狀態會話bean更改默認的bean實例池。 我們還看到了如何使用AS7中的CLI來完成所有這些工作。

參考: JBoss AS 7.0.1 –從我們的JCG合作伙伴 Jaikirian的“ Jaitech WriteUps”博客中 配置EJB3池 。

相關文章 :
  • JBoss AS 7.0.2“ Arc”發布–使用綁定選項
  • 帶有Spring和Maven教程的JAX–WS
  • JBoss 4.2.x Spring 3 JPA Hibernate教程
  • 調試生產服務器– Eclipse和JBoss展示
  • Java EE6 CDI,命名組件和限定符
  • Java教程和Android教程列表

翻譯自: https://www.javacodegeeks.com/2011/11/jboss-as-7-ejb3-pools-configuration.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374154.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374154.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374154.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS開發網絡篇—文件的上傳

說明&#xff1a;文件上傳使用的時POST請求&#xff0c;通常把要上傳的數據保存在請求體中。本文介紹如何不借助第三方框架實現iOS開發中得文件上傳。 由于過程較為復雜&#xff0c;因此本文只貼出部分關鍵代碼。 主控制器的關鍵代碼&#xff1a; YYViewController.m 1 #import…

var模型的matlab實現_Eviews中VAR模型的操作、脈沖響應分析和方差分解的實現

打開文件所在位置&#xff0c;獲取數據。選中變量右鍵open打開var操作EViews,在VAR對象的工具欄中選擇“View”|“Lag Structure”|“AR Roots Table/ AR Roots Graph”選項&#xff0c;得到AR根的表和圖。結果顯示&#xff1a;VAR模型所有根模的倒數都小于1&#xff0c;即都在…

一個程序員的愛情表白書

我能抽象出整個世界 但是我不能抽象出你 因為你在我心中是那么的具體 所以我的世界并不完整 我可以重載甚至覆蓋這個世界里的任何一種方法 但是我卻不能重載對你的思念 也許命中注定了 你在我的世界里永遠的烙上了靜態的屬性 而我不慎調用了愛你這個方法 當我義無返顧的…

結構體、枚舉類型

一、結構體 結構體&#xff1a;就是一個自定義的集合&#xff0c;里面可以放各種類型的元素&#xff0c;用法大體跟集合一樣。 1、定義的方法&#xff1a; struct student { public int nianling; public int fenshu; public string name; public string sex; public int sum; …

NXP KW38開發雜記(一)MCUXpress 運行進入NMI_Handler

這里是大佬的具體分析過程&#xff0c;感興趣可以看看 https://www.cnblogs.com/wenhao-Web/p/13618703.html 解決辦法&#xff1a; 在startup_mkw38a4.c文件里&#xff0c;定位到Flash_Config {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE}; 把最后一個參數0xFFFFFFFE改…

25個讓Java程序員更高效的Eclipse插件

Eclipse提供了一個可擴展插件的開發系統。這就使得Eclipse在運行系統之上可以實現各種功能。這些插件也不同于其他的應用&#xff08;插件的功能是最難用代碼實現的&#xff09;。擁有合適的Eclipse插件是非常重要的&#xff0c;因為它們能讓Java開發者們無縫的開發基于J2EE和服…

NXP KW38藍牙開發(一)入門第一課:官網藍牙廣播和連接例程,NMI禁止

首先要下載開發使用的IDE&#xff1a;MCUXpresso IDE 下載鏈接&#xff1a; 進入nxp的官網&#xff0c;搜索KW38 向下翻看&#xff0c;找到Xpresso&#xff0c;點擊進入 習慣使用IAR開發的同學也可以下IAR版本&#xff0c;這里以Xpresso為例 下載好后安裝&#xff0c;一路默…

rough and crude

rough:物理上的粗糙或者說不平&#xff0c;高爾夫球場的生草區 crude:原始、未經加工的那種粗&#xff0c;即沒有精加工轉載于:https://www.cnblogs.com/dgyw/p/5767078.html

views 多個文件夾 netcore_.NET Core中的使用Kestrel服務器理解及應用

Kestrel是一個基于libuv的跨平臺.NET Core web服務器&#xff0c;libuv是一個跨平臺的異步I/O庫。ASP.NET Core模板項目使用Kestrel作為默認的web服務器。Kestrel支持以下功能&#xff1a;HTTPS用于啟用不透明升級的WebSockets位于Nginx之后的高性能Unix socketsKestrel 被.NET…

使用PowerMock測試對象的內部狀態

大多數單元測試都集中于測試對象的行為以證明其有效。 這可以通過編寫一個JUnit測試來實現&#xff0c;該測試調用對象的公共方法&#xff0c;然后測試這些調用的返回值是否與先前定義的一組期望值匹配。 這是一種非常常見且成功的技術。 但是&#xff0c;不應忘記對象也顯示狀…

布局

1&#xff09;ul li 把ul寬度設置大一點&#xff0c;然后overflowhidden;&#xff08;最好不要嵌套使用&#xff0c;原因看清除浮動方法&#xff09;&#xff0c;然后外面必須有包裹的div殼&#xff0c;div殼的寬度就按設計稿來&#xff0c;這樣就避免了需要給最后一個li設置m…

10個職場故事,讓人不得不看

1、強盜師徒 有一次&#xff0c;一個老強盜帶著徒弟去搶劫銀行&#xff0c;被警方追捕。兩人狂逃&#xff0c;差點兒連褲子都跑掉了。好不容易甩掉了警察&#xff0c;兩人上氣不接下氣&#xff0c;癱倒在地上。 良久&#xff0c;驚魂稍定&#xff0c;徒弟說:“師父啊師父&#…

NXP UWB NCJ29D5開發(一)環境搭建

1、從NXP的共享賬號下載資料 共享賬號需要找對接的NXP人員拿到&#xff0c;他會把資料分享到這個賬號&#xff0c;在這個賬號里面可以下載 進入nxp官網&#xff0c;登錄后點擊my nxp&#xff0c;選擇Software Licensing and Support 進入后接著選擇View accounts 進入后選擇…

西瓜創客python編程進階收費_西瓜創客和編程貓有什么不同?哪個更值得報名?...

看情況來決定即可&#xff0c;在課程內容上其實出入我覺得不是很大&#xff0c;重點是教學服務、師資、授課模式等&#xff0c;單純我自己的角度來說&#xff0c;我個人偏向于西瓜創客多一點&#xff0c;他們家的課程更具有趣味性&#xff0c;游戲化教學&#xff0c;融入卡通人…

Stack的三種含義

作者&#xff1a;阮一峰 學習編程的時候&#xff0c;經常會看到stack這個詞&#xff0c;它的中文名字叫做”棧”。 理解這個概念&#xff0c;對于理解程序的運行至關重要。容易混淆的是&#xff0c;這個詞其實有三種含義&#xff0c;適用于不同的場合&#xff0c;必須加以區分。…

NXP UWB NCJ29D5開發(二)BlinkyLed例程

路徑為UWB\NCJ29D5\NCJ29D5_CAS_Examples_v1.4\onic\BlinkyLed\toolsupport\keil 例程怎么來的可以看看上一篇NXP UWB NCJ29D5開發&#xff08;一&#xff09;環境搭建 1、 //系統選擇外部晶振&#xff0c;時鐘頻率為55.2Mhz phscaAppHal_Init(PHSCA_APPHAL_XO_CLOCK_SOURCE_…

你要看透的56條人生哲理

當你躊躇不前、站在人生十字路口時候&#xff0c;這56條哲理或許能助你一臂之力&#xff01;      1&#xff0e;拿得起&#xff0c;放得下      我們每個人都有很多“寶貝”&#xff0c;但你不可能什么都得到&#xff0c;在某些時候一定要學會拿得起&#xff0c;放得下…

使用Spring和Java泛型簡化數據訪問層

1.概述 本文將著重于通過對系統中的所有實體使用單個通用的數據訪問對象來簡化DAO層 &#xff0c;這將導致優雅的數據訪問 &#xff0c;而不會造成不必要的混亂或冗長。 2. Hibernate和JPA DAO 大多數生產代碼庫都有某種DAO層。 通常&#xff0c;實現范圍從沒有抽象基類的多個…

強肝保肝養肝4大食物

“強肝的食物,保肝的食物有哪些,養肝的食物有哪些”如果您對這些食物不了解不明白。那就看看專家為您推薦的四款強肝保肝養肝的食物。荔枝&#xff08;供圖/華蓋&#xff09;一、是荔枝&#xff0c;荔枝可以保肝&#xff0c;對肝有好處根據《本草綱目》記載荔枝有強肝健胰的效果…

如何查看注解實現_該怎么運用注解呢?Java團隊元老有話說

來源 | 異步 15講能學好誕生24年的JAVA嗎&#xff1f;你當然會感到懷疑&#xff0c;眾所周知&#xff0c;在技術向的IT論壇上&#xff0c;“如何在十天之內快速掌握好Java&#xff1f;”這類問題&#xff0c;往往會招來嘲笑。來源于知乎但在當下&#xff0c;5分鐘能看完一部電影…