विभिन्न पोर्टलों में एक सेवा की एक ही सारणी तक पहुंचने के लिए, प्रत्येक में सेवाओं को फिर से न बनाएं। इसके बजाय, एक पोर्टलेट में सेवा बनाएं और docroot/WEB-INF/lib/<pluginmame>-portlet-service.jar
को अन्य पोर्टलों की docroot/WEB-INF/lib/
निर्देशिका में कॉपी करें। आइए एक उदाहरण देखें।
आप निम्नलिखित है एक portlet person-portlet
बुलाया में service.xml
मान लीजिए:
<service-builder package-path="br.com.seatecnologia.stackoverflow.person">
<author>brandizzi</author>
<namespace>StackOverflowPerson</namespace>
<entity name="Person" local-service="true" remote-service="false">
<column name="personId" type="long" primary="true" />
<column name="name" type="String" />
<column name="age" type="int" />
</entity>
</service-builder>
आप सेवाओं पैदा करते हैं और मूल portlet में इसका इस्तेमाल करते हैं, हमेशा की तरह। उदाहरण के लिए, आप एक JSP व्यक्ति पंजीकरण और व्यक्ति लिस्टिंग के लिए एक फार्म के साथ बना सकते हैं: अब,
<%@page import="br.com.seatecnologia.stackoverflow.person.service.PersonLocalServiceUtil"%>
<%@page import="br.com.seatecnologia.stackoverflow.person.model.Person"%>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<portlet:actionURL name="addPerson" var="url" />
<aui:form action="<%= url %>" name="fm" method="POST">
<aui:fieldset>
<aui:input name="name" />
<aui:input name="age" />
<aui:button type="submit" />
</aui:fieldset>
</aui:form>
<ul>
<% for (Person person : PersonLocalServiceUtil.getPersons(-1, -1)) { %>
<li><%= person.getName() %> : <%= person.getAge() %></li>
<% } %>
</ul>
यदि आप किसी अन्य portlet, नमस्ते विश्व के कुछ प्रकार है जो सभी पंजीकृत व्यक्तियों को एक शुभकामना संदेश प्रस्तुत करता है की जरूरत है लगता। आप एक नया पोर्टल प्लगइन बनाते हैं - जिसे हम कहते हैं, multiple-hello-portlet
- और फिर निर्देशिका से multiple-hello-portlet/docroot/WEB-INF/lib
पर फ़ाइल person-portlet-service.jar
फ़ाइल कॉपी करें। यदि आपके पास उसी पोर्टल_ में तैनात पोर्टलेट दोनों हैं, तो आप में 10 में बनाए गए सेवाओं का भी उपयोग कर सकते हैं। उदाहरण के लिए, अपने multiple-hello-portlet
निम्नलिखित JSP हो सकता है और सेवाओं reimplementing की कोई जरूरत नहीं है:
<%@page import="br.com.seatecnologia.stackoverflow.person.service.PersonLocalServiceUtil"%>
<%@page import="br.com.seatecnologia.stackoverflow.person.model.Person"%>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<% for (Person person : PersonLocalServiceUtil.getPersons(-1, -1)) { %>
<div class="portlet-msg-info">
Hello, <%= person.getName() %>!
You are <%= person.getAge() %> years old.
</div>
<% } %>
मैं इन उदाहरणों के साथ दो runnable portlets बनाई गई है, कि तुम BitBucket में पा सकते हैं।
यह EXT प्लग इन का उपयोग करने के लिए करता है, तो आप संभवतः यह बच सकते हैं की सलाह नहीं दी है। इस मामले में ब्रांजीज़ी बताते हुए दूसरे पोर्टलेट के क्लासपाथ पर पहले पोर्टलेट से निर्मित {portletname} -portlet-service.jar होने से आसानी से बचने योग्य है। – Jonny
आपके पास EXT प्लगइन्स के बारे में एक बिंदु है, क्योंकि उन्हें तैनाती/अनावश्यक/पुन: नियोजित करना बहुत मुश्किल है, और जब तक कोई अन्य Liferay प्लगइन प्रकार आपकी आवश्यकता के अनुरूप न हो, तब तक सबसे अच्छी तरह से बचें। – fimez