|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net网页编程有没有机会赶上java。在这个系列文章的第一篇和第二篇中,我注释了甚么是portletbridge?和怎样在一个基础的JSF和基于RichFaces(Ajax)的portlet中安装和利用它,和以后能撑持运转JBossPortletBridge的portal服务器的次要区分。最初这篇文章将会合报告Seamportlet的开辟,和最新公布的JBossPortletBridgeBeta4版本的一切特征和上风。关于不太熟习portlets的读者来讲,细心浏览后面两篇文章会有助于更好的了解本文。
如今让我们先从Seamportlet的开辟动手。
安装SeamPortlet
开辟工具:
要模仿本文示例举行开辟,就必要下载最新版本的Maven(我用的是2.0.9版本)。
安装Maven2.0.9+
在呆板上设置Mavenbinaries的path情况变量
创立项目:
分歧的Maven原型(archetype)对应能够发生分歧品种的bridge。间接从命令交运行以下代码,可创立你的Seamportlet项目:- mvnarchetype:generate-DarchetypeGroupId=org.jboss.portletbridge.archetypes-DarchetypeArtifactId=seam-basic-DarchetypeVersion=1.0.0.B4-DgroupId=org.my.project-DartifactId=seamproject-DarchetypeRepository=http://repository.jboss.org/maven2/-Dversion=1.0.0.B4
复制代码 该特定原型是模块化的,这意味着经由过程其发生的项目将由几个子项目组成。如许做的优点是源码、资本和设置之间的界线加倍明晰,保护也更便利。上述命令将发生三个目次,个中,‘web’目次中包括标志文件、图片和WEB-INFxml设置文件;‘ejb’目次中包括一切SeamEJB3源码,和任何跟耐久化和ejb部署相干的xml设置文件信息;最初是‘ear’目次,它次要用来汇合项目信息构建ear文件。
假如你是用下面提到的原型(archetype)命令创立的项目,那末如今你就会有一个‘seamproject’目次。如今到该目次下并运转以下命令:
mvninstall
这个命令将会匡助你下载当地Maven库中短少的任何组件,并编译和构建ear文件。
运转和部署portlet:
既然你已有一个可部署的ear文件,那末再使用上面的命令就能够轻松的将portlet部署到最新版本的JBossPortal上(已绑定到JBoss使用服务器)了。假如你已本人下载或创立了当地安装包,便可在bridge文档中找到利用自界说设置的申明了。
如今转到{seamproject}/ear目次下运转以下命令:- mvncargo:start-Premote-portal-Dportal-2.7.0.B1
复制代码
<br>
该命令将花上一段工夫(视你的收集情形而定)来下载最新版本的JBossApplicationServer和JBossPortal(软件均位于SourceForge.net网站上)。在持续下一步骤之前你应当能看到与上文画面类似的日记纪录。*注重:你大概还会看到日记纪录中不休滚屏的WSRP信息,不必忧虑,这一样是证实你已筹办停当的标记。
如今来部署你的Seam项目ear文件。新翻开一个终端窗口,转到目次{seamproject}/ear下,运转以下命令:- mvncargo:deploy-Premote-portal-Dportal-2.7.0.B1
复制代码 当你在服务器日记中看到ear文件已部署乐成时,会见链接http://localhost:8080/portal/portal/default/seamproject,会看到以下页面:
<br>
如今我们已筹办好一个要开辟Seamportlet了。固然,使用程序究竟怎样写是由开辟职员来决意的事变。可是这会帮你挣脱那些噜苏的设置成绩,轻松的入手下手事情。
设置
将JSFportlet转换为一个典范的Seam使用,只必要大批的设置事情便可完成。上面的设置文件代码省略了后面文章(第一部分和第二部分)已提到过的设置信息。假如想懂得具体内容,请参照bridge文档的设置部分。
web.xml
------------------
上面的这段设置一般是任何Seam使用中城市有的内容,而且不会由于portlet情况而有所分歧:- <listener><listener-class>org.jboss.seam.servlet.SeamListener</listener-class></listener><servlet><servlet-name>SeamResourceServlet</servlet-name><servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class></servlet><servlet-mapping><servlet-name>SeamResourceServlet</servlet-name><url-pattern>/seam/resource/*</url-pattern></servlet-mapping><filter><filter-name>SeamFilter</filter-name><filter-class>org.jboss.seam.servlet.SeamFilter</filter-class></filter><filter-mapping><filter-name>SeamFilter</filter-name><servlet-name>FacesServlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dspatcher></filter-mapping>
复制代码 设置ExceptionHandler高低文参数,可同意bridge使用现成的非常处置器往办理基于Seam的非常。假如乐意的话,你也完整能够使用本人的完成:- <context-param><param-name>org.jboss.portletbridge.ExceptionHandler</param-name><param-value>org.jboss.portletbridge.SeamExceptionHandlerImpl</param-value></context-param>
复制代码 Bridgelet是针对portletbridge扩大(extension)的称号。portletbridge社区一向在主动的开辟一些扩大以加强或会合JBossPortal、Seam和Richfaces三者的特征,比方,PortalIdentity(SSO)seam组件可同意你把jar文件放在你的classpath上,如许你立即就会有一个可用于Seam和Portal之间的SSO了。你也能够在Mavenpom中将这个扩大设置成一个依附(象上面将看到的那样)。
假如你对Bridgelet有甚么倡议,大概成心介入JBossPortletBridge的开辟事情,那末我们等候你主动到场我们的论坛并提交Jiratasks。
Seam使用和JBossPortal之间的单点登录成绩
开辟职员能够把SeamBookingDemo用做一个开辟和测试的portlet参考程序。假如想懂得和理论SSOBridgelet,你能够今后地点http://anonsvn.jboss.org/repos/portletbridge/tags/1.0.0.B4/examples/seam/booking/下载源代码,然后运转与此篇文章下面方才讲过的完整不异的maven部署命令(大概是上面将要讲到的冗长版本)来部署和运转该程序。
冗长版本是:
转到{SeamBooking}根目次下,运转以下命令:
mvninstall
然后再转到{SeamBooking}/ear目次下,运转:
mvncargo:start-Premote-portal-Dportal-2.7.0.B1
如今再来部署你的Seam项目ear文件。新翻开一个终端窗口,在{SeamBooking}/ear目次下运转以下命令:
mvncargo:deploy-Premote-portal-Dportal-2.7.0.B1
<br>
一旦你部署完成并运转demo后,就能够会见链接http://localhost:8080/portal/portal/default/SeamBooking持续上面的步骤了。点击“注册新用户(RegisterNewUser)",新建一个用户并用其登录体系:
<br>
登录以后你将会看到旅店搜刮页面,另有与以后登录脚色对应的一切功效。可是,假如你看向屏幕右上角,你会发明登录到Seam使用和你的JBossPortal用户/办理员账户一点干系都没有:
<br>
这就是我们必要SSOBridgelet的来由,它同意经由过程Seam身份认证模块来考证JBossPortal用户名。如今让我们来实验一下:
令服务器仍然坚持运转形态,在举行部署的谁人终端窗口中,前往到上一级目次,也就是{SeamBooking}/根目次下运转以下命令:
mvninstall-Psso
接上去再转到{SeamBooking}/ear目次下运转以下命令:
mvncargo:deploy-Premote-portal-Dportal-2.7.0.B1
经由过程上述命令我们将SSOjar包嵌进进了使用,偏重新部署了一次ear文件。
如今,让我们回到http://localhost:8080/portal/portal/default/SeamBooking上的portlet。此次我们登录到portal而不是Seam使用。点击页面右上方的portallogin举行登录,用户名和暗码都是‘admin’。
<br>
假如这是一个实际中的使用,我们会对UI做一点调剂,把Seam使用的登录表单埋没起来。同时由于SSO的存在,我们能够调剂网站别的基于脚色的内容。可是,正如我后面所说,这是从最原始形态的Seambookingdemo动身做最小修改能到达的效果,只是一个参考。
登录到JBossPortal后,在你的Seam和PortalUI上你将会看到以下内容:
在办理了Portal和你的Seam使用之间的身份认证成绩后,使用的创立就变得简单些了。假如你的Seamportlet是基于Maven创立的,那末还必要你做的就只要在pom.xml文件中增加以下代码了:- <dependency><groupId>org.jboss.portletbridge.extensions.seam</groupId><artifactId>PortalIdentity</artifactId><version>1.0.0.B4</version></dependency>
复制代码 大概你也能够把PoralIdentity.jar文件放到使用程序WEB-INF/lib目次下就好了,不再必要做其余设置了。
JBossPortletBridgeBeta4概述
既然这是本系列文章的最初一篇,那末在最初一部分我将先容9月11日方才公布的JBossPortletBridgeBeta4版本的新特征。
撑持PortletMode变更
一个PortletMode代表了使用中一个分歧的展示路径(renderpath),有三种尺度的形式:view、edit和help。bridge的ExternalContext.encodeActionURL能够识别查询字符串参数javax.portlet.faces.PortletMode,并用这个参数值在底层portletactionURL或呼应上设置portlet形式。一旦处置完就要把这个参数从查询字符串中往失落。下述导航划定规矩将会在portlet的edit形式下出现viewId为edit.jspx的页面:- <navigation-rule><from-view-id>/register.jspx</from-view-id><navigation-case><from-outcome>edit</from-outcome><to-view-id>/edit.jspx?javax.portlet.faces.PortletMode=edit</to-view-id></navigation-case></navigation-rule>
复制代码 导航至一个形式的终极viewId
缺省地,一个形式的改动将从形式的默许视图(不带形态)入手下手。关于一个一般的portlet形式,在其前往到进进另外一形式之前的谁人形式时(比方:view->edit->view),它将会跳转到这个形式(分开之前)的终极视图(和形态)。bridge可以对需要信息举行分明的编码,以便有必要前往到前一个形式时,它能够定位到得当的视图,并恢复到应有的形态。开辟职员可使用由bridge保护的session属性,以便从一个形式导航回其前一个形式的终极地位和形态。一样,开辟职员必要形貌一个静态导航:“从视图X前往到形式Y的终极视图”。这能够用由EL表达式复杂地暗示以下:- <navigation-rule><from-view-id>/edit.jspx*</from-view-id><navigation-case><from-outcome>view</from-outcome><to-view-id>#{sessionScope["javax.portlet.faces.viewIdHistory.view"]}</to-view-id></navigation-case></navigation-rule>
复制代码 Portlet开辟职员必要注重的成绩
依据bridge完成,当用到这些session局限的属性值、大概任何大概包括查询字符串参数的viewIds时,最幸亏考证划定规矩方针(ruletarget)时利用通配符语法。比方,下面的<to-view-id>表达式前往的是一个表单的viewId(/viewId?javax.portlet.faces.PortletMode=view&....)。其不含通配符,因而当该新视图产生页面跳转时,导航划定规矩就没法剖析了,由于它找不就任何可与之完整婚配的对象。
而下面的edit.jspx<from-view-id>包括了通配符,导航划定规矩便可用查询串(<to-view-id>/edit.jspx?javax.portlet.faces.PortletMode=edit</to-view-id>)来和它婚配。激烈倡议开辟职员都利用这类通配符以确保程序能够在各类bridge完成中一般实行。
处置Portlet中的Ajax毛病
默许的,毛病是由处置Ajax哀求的尺度servlet页面来办理。要在portlet外部处置毛病,就要用到上面的JavaScript代码:- <scripttype="text/javascript">A4J.AJAX.onError=function(req,status,message){window.alert("CustomonErrorhandler"+message);}A4J.AJAX.onExpired=function(loc,expiredMsg){if(window.confirm("CustomonExpiredhandler"+expiredMsg+"foralocation:"+loc)){returnloc;}else{returnfalse;}}</script>
复制代码 结论
正如后面所说,portletbridge社区从项目初期测试阶段就已入手下手公布补钉和别的情势的匡助来增进其开展。固然项目标中心是JSR-301标准,但是整合Seam、Richfaces、Portal和Bridgelets和别的帮助性的增强功效是具有没有限潜能和意义的。已有些开辟职员为项目标开展奉献了他们的力气,在此我们对一切这些供应过补钉、加强构件和在论坛上主动回覆成绩的人们暗示衷心的感激。
最初,这是一个基于社区的项目,供应匡助和反应的开辟职员越多,我们的新产物公布的越快,其功效也就更强,代码也更完美。估计GA版本会在09岁首公布。
在论坛上供应反应十分有效,我们也很接待。假如你想要懂得更多关于JBossPortletBridge项目标信息能够会见我们的项目和文档页面。
相干浏览:
利用JSF、Ajax和Seam开辟Portlets(1/3)
利用JSF、Ajax和Seam开辟Portlets(2/3)
本文出自:http://www.infoq.com/cn/articles/jsf-ajax-seam-portlets-pt-3;jsessionid=F7B2A8228DE70D255534116034706E2B
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net网页编程比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。 |
|