锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成图片小说网站,亚洲自偷自拍另类图片二区,亚洲午夜精品久久久久久apphttp://www.tkk7.com/zhuyan/category/20906.htmlJAVA鍚彂鑰?/description>zh-cnWed, 28 Mar 2007 06:34:03 GMTWed, 28 Mar 2007 06:34:03 GMT60pluto1.1瀹夎鍦═OMCAThttp://www.tkk7.com/zhuyan/articles/106855.html鏈卞博鏈卞博Wed, 28 Mar 2007 01:50:00 GMThttp://www.tkk7.com/zhuyan/articles/106855.htmlhttp://www.tkk7.com/zhuyan/comments/106855.htmlhttp://www.tkk7.com/zhuyan/articles/106855.html#Feedback0http://www.tkk7.com/zhuyan/comments/commentRss/106855.htmlhttp://www.tkk7.com/zhuyan/services/trackbacks/106855.html

Installing the Pluto 1.1 Binary Build

About Pluto Distributions

There are a number of distributions to choose from depending on your needs.

  • pluto-current-bundle - Provides Pluto and Tomcat bundled together. If you are getting started with Pluto, this is the distribution you want.
  • pluto-current-bin - Provides the Pluto libraries, portal and testsuite web applications.
  • pluto-current-container-bin - Provides the Pluto container libraries only.
  • pluto-current-src - Provides the Pluto source code; requires that you build and deploy Pluto on your own.
  1. Download the Pluto 1.1 binary distribution named pluto-current-bundle from a distribution site.
  2. Unzip the binary distribution into a directory.
    1. <PLUTO-1.1-HOME> will be the top level directory.
  3. Execute startup.bat (Windows) or startup.sh (Unix) in <PLUTO-1.1-HOME>/bin.
    1. Use shutdown.bat/shutdown.sh to stop the portal
  4. Browse to http://localhost:8080/pluto/portal
  5. Login as the user pluto (password=pluto).

Building Pluto from Source

Maven 2 is utilized as the project management and build system for Pluto 1.1. Pluto currently provides Maven plugins which can be used to install the Pluto Portal, assemble portlet applications, deploy applications, and publish portlet applications to the Pluto Portal.

Obtaining Pluto 1.1 Source Code

The Pluto project uses the Subversion version control system. If you're new to Subversion, you can check out the online book about Subversion. Note that we are currently using Subversion 1.3.x (there are separate versions of the book covering the different versions of Subversion). Web Access to Subversion To browse the Pluto 1.1 source code, you can use the ViewCVS web interface to Subversion. This is current at all times. Normal Subversion Access Anyone can check code out of Subversion anonymously. However, you need to specify a username and password in order to update the Subversion repository, and only Pluto committers have the permissions to do that. We run Subversion over standard HTTPS, so hopefully you won't have problems with intervening firewalls.

Check out from Subversion

Again, anyone can do this. To check out the latest distribution of Pluto 1.1 (trunk) to a directory called 'pluto' use this command:
svn checkout https://svn.apache.org/repos/asf/portals/pluto/trunk/ pluto
To check out Pluto 1.1.1 source to the 'pluto' directory use this command:
svn checkout https://svn.apache.org/repos/asf/portals/pluto/tags/pluto-1.1.1 pluto
Zipped up Pluto source distributions can also be downloaded from a distribution mirror.

Building Pluto with Maven 2

If this is your first time building Pluto with Maven 2, edit ~/.m2/settings.xml and add the <pluginGroups> element:
<settings>
  ...
  <pluginGroups>
    <pluginGroup>org.apache.pluto</pluginGroup>
  </pluginGroups>
  ...
</settings>
            
If you don't have org.apache.pluto specified as a <pluginGroup>, then the pluto:install will fail.

<PLUTO-1.1-SRCHOME> is the local directory where the Pluto 1.1 source distribution has been checked out or unzipped into.

$> cd <PLUTO-1.1-SRCHOME>
$> mvn install
$> mvn pluto:install -DinstallDir=path/to/appserver
          

The install goal is a built in Maven 2 lifecycle which builds the project artifacts and installs them into the Maven repository.

The pluto:install goal will take the resulting artifacts and properly deploy them within the configured Tomcat installation. Currently, the Pluto 1.1 install has been tested on Tomcat 5.5.9, 5.5.17 and 5.5.20. The Tomcat 5 archive can be found here.

If installing to a directory that contains spaces, installDir needs to be enclosed within quotes:

C:\pluto> mvn pluto:install -DinstallDir="C:\Program Files\Apache Software Foundation\Tomcat 5.5"
          

Installing Pluto Manually

This section documents the manual installation of Pluto into Tomcat. It replaces the pluto:install goal, but requires that the built-in Maven 2 install goal (mvn install) be run from <PLUTO-1.1-SRCHOME>.

Step 1:

$> cd <PLUTO-1.1-SRCHOME>
$> mvn install
          

Step 2: Copy the following to <TOMCAT_HOME>/shared/lib:

  • castor-1.0.jar
  • portlet-api-1.0.jar
  • pluto-container-1.1.1.jar
  • pluto-descriptor-api-1.1.1.jar
  • pluto-descriptor-impl-1.1.1.jar
  • pluto-taglib-1.1.1.jar
Step 3: Copy the following to <TOMCAT_HOME>/common/endorsed:
  • xercesImpl-2.6.2.jar
  • xmlParserAPIs-2.6.2.jar
Step 4: Copy the following to <TOMCAT_HOME>/conf/Catalina/localhost:
  • <PLUTO_SRCHOME>/pluto-portal/src/main/resources/pluto.xml
  • <PLUTO_SRCHOME>/pluto-testsuite/src/main/resources/testsuite.xml
Step 5: Copy the following to <TOMCAT_HOME>/webapps:
  • <PLUTO_SRCHOME>/pluto-portal/target/pluto-portal.war
  • <PLUTO_SRCHOME>/pluto-testsuite/target/pluto-testsuite.war

Installing Pluto with a Windows EXE

The NSIS Installer is not yet complete, but we hope to have a fully functional one soon. Anyone is more than welcome to assist us in this process.

Configuring Source-Built Pluto for Application Scope PortletSession Attributes

To be able to use application-scoped PortletSession attributes in Pluto, modify the Connector element for port 8080 in <TOMCAT_HOME>/conf/server.xml by adding the following attribute and value: emptySessionPath="true".

Configuring User and Role in the Pluto Source Build

The Pluto Testsuite portlet application needs the role 'pluto' to run the Security Mapping Test. So before starting tomcat, you should edit <TOMCAT_HOME>/conf/tomcat-users.xml, add the role 'pluto', and add a user in that role. The simplest way to do this is to edit add the 'pluto' role to the 'tomcat' user's record. Here is a sample tomcat-users.xml file:
<?xml version="1.0" encoding="utf-8"?>
<tomcat-users>
  <role rolename="pluto"/>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat,pluto"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
        

Starting the Portal

Now you are ready to use the Pluto Portal built from source. Start up tomcat by running startup.bat (for windows) or startup.sh (for *nix) in <TOMCAT_HOME>/bin, and browse to http://localhost:8080/pluto/portal. Login to Pluto using the user and password you just created in tomcat-users.xml. If you added the 'pluto' role to the 'tomcat' user's record, you can login as 'tomcat/tomcat'.


鏈卞博 2007-03-28 09:50 鍙戣〃璇勮
]]>
Pluto鍒濆鍖栨祦紼?/title><link>http://www.tkk7.com/zhuyan/articles/106714.html</link><dc:creator>鏈卞博</dc:creator><author>鏈卞博</author><pubDate>Tue, 27 Mar 2007 09:11:00 GMT</pubDate><guid>http://www.tkk7.com/zhuyan/articles/106714.html</guid><wfw:comment>http://www.tkk7.com/zhuyan/comments/106714.html</wfw:comment><comments>http://www.tkk7.com/zhuyan/articles/106714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/zhuyan/comments/commentRss/106714.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/zhuyan/services/trackbacks/106714.html</trackback:ping><description><![CDATA[ <div style="MARGIN-TOP: 1px; MARGIN-LEFT: 15px"> <h2>Pluto鍒濆鍖栨祦紼?a title="姘鎬箙閾炬帴錛歅luto鎺у埗嫻佺▼" ></a></h2> </div> <div style="MARGIN-TOP: 5px; MARGIN-LEFT: 15px"> <b>鍏抽敭瀛?</b> 聽 Pluto Portal 闂ㄦ埛聽聽聽聽 </div> <div style="MARGIN-TOP: 10px; MARGIN-LEFT: 15px; OVERFLOW: auto"> <table width="100%"> <tbody> <tr> <td> <p> <font face="Arial"> <br />涓銆佸垵濮嬪寲嫻佺▼</font> </p> <p> <font face="Arial">聽 //Servlet鍒濆鍖?br />聽 Pluto.PortalImpl.Servlet.init()</font> </p> <p> <font face="Arial">聽聽聽聽 // ServiceManager鍒濆鍖?br />聽聽聽聽 ServiceManager.init()</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 ConfigService.init()聽 // 閰嶇疆鏈嶅姟</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 LogService.init()聽 // 鏃ュ織鏈嶅姟</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 FactoryManagerService.init()聽 // 宸ュ巶綆$悊鍣?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 PortletDefinitionRegistryService.init()聽 // Portlet瀹氫箟娉ㄥ唽琛?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 PortletEntityRegistryService.init()聽 // Portlet瀹炰綋娉ㄥ唽琛?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 PageRegistryService.init() // Page娉ㄥ唽琛?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 //娉紝浠ヤ笂鏈嶅姟閮借鍙栧悓鍚嶇殑properties閰嶇疆鏂囦歡.</font> </p> <p> <font face="Arial">聽聽聽聽 // 鍒濆鍖朠ortlet瀹瑰櫒, 瀹瑰櫒瀹炵幇綾誨湪ConfigService.properties涓寚瀹?br />聽聽聽聽 PortletContainerFactory.getPortletContainer().init()</font> </p> <p> <font face="Arial">浜屻佽姹傚鐞嗘祦紼?</font> </p> <p> <font face="Arial">聽 Pluto.PortalImpl.Servlet.doGet()</font> </p> <p> <font face="Arial">聽聽聽 1. 鍒涘緩PortalEnvironment;</font> </p> <p> <font face="Arial">聽聽聽 2. 鏌ユ壘ActionWindow;</font> </p> <p> <font face="Arial">聽聽聽 2a. 濡傛壘鍒癆ctionWindow, 鍒欎負Action<br />聽聽聽聽聽聽聽聽聽聽聽 鎵цPortletContainer.processPortletAction();<br />聽聽聽聽聽聽聽聽聽聽聽 閲嶅畾鍚戣緭鍑?</font> </p> <p> <font face="Arial">聽聽聽 2b. 鎵句笉鍒癆ctionWindow, 鍒欎負Render, 璇誨彇Page瀹氫箟銆?br />聽聽聽聽聽聽聽聽聽聽聽 RootFragment root = PageRegistry.getRootFragment();<br />聽聽聽聽聽聽聽聽聽聽聽 root.service(servletRequest, servletResponse);</font> </p> <p> <font face="Arial">聽聽聽 3. 澶勭悊瀹屾瘯;</font> </p> <p> <font face="Arial">聽 // 澶勭悊Fragment, RootFragment涓嶱ageregistry.xml鏂囦歡鍏寵仈, 鍚庤呭畾涔変簡欏甸潰鐨勫竷灞<br />聽 Pluto.portalImpl.Aggregation.RootFragment.service()</font> </p> <p> <font face="Arial">聽聽聽 // 鏈嶅姟鍓嶇疆澶勭悊銆?br />聽聽聽 1. preService(request, response);</font> </p> <p> <font face="Arial">聽聽聽 // 鍖呭惈涓庡綋鍓峟ragment鍚屽悕鐨刯sp鏂囦歡錛屽綋鍓嶄負RootFragment銆?br />聽聽聽 2. RequestDispatcher rd = getServletConfig().getServletContext().<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 getRequestDispatcher(BASE_ROOT+jspName);<br />聽聽聽聽聽聽 rd.include(request, response);</font> </p> <p> <font face="Arial">聽聽聽 // 鏈嶅姟鍚庣疆澶勭悊<br />聽聽聽 3. postService(request, response);</font> </p> <p> <font face="Arial">聽 // Pageregistry.xml<br />聽 銆坧ortal銆壜?// 瀵瑰簲RootFragment<br />聽聽聽 銆坒ragment name="navigation" <br />聽聽聽聽聽聽聽 class="org.apache.Pluto.portalImpl.aggregation.navigation.TabNavigation"銆?br />聽聽聽 銆?fragment銆?/font> </p> <p> <font face="Arial">聽聽聽 銆坒ragment name="test" type="page"銆壜?// 瀵瑰簲PageFragment<br />聽聽聽聽聽聽聽 銆坣avigation銆?br />聽聽聽聽聽聽聽聽聽聽聽 銆坱itle銆塗est銆?title銆?br />聽聽聽聽聽聽聽聽聽聽聽 銆坉escription銆?..銆?description銆?br />聽聽聽聽聽聽聽 銆?navigation銆?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 銆坒ragment name="row" type="row"銆壜?// 瀵瑰簲RowFragment<br />聽聽聽聽聽聽聽聽聽聽聽 銆坒ragment name="col1" type="column"銆壜犅?// 瀵瑰簲ColumnFragment<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坒ragment name="p1" type="portlet"銆壜犅?// 瀵瑰簲PortletFragment<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧roperty name="portlet" value="3.1"/銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?fragment銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坒ragment name="p2" type="portlet"銆壜?// 瀵瑰簲PortletFragment<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧roperty name="portlet" value="4.1"/銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?fragment銆?br />聽聽聽聽聽聽聽聽聽聽聽 銆?fragment銆?br />聽聽聽聽聽聽聽 銆?fragment銆?br />聽聽聽 銆?fragment銆?br />聽 銆?portal銆?/font> </p> <p> <font face="Arial">聽聽 // 涓婇潰鐨勫眰嬈$粨鏋勫崄鍒嗘竻妤氾紝鍏朵腑fragment涓嶧ragment鐨勫瓙綾誨搴旓紝涓婇潰鐨勫畾涔変腑鍖呮嫭RootFragment, <br />聽聽聽聽聽聽聽 PageFragment, RowFragment, ColumnFragment鍜孭ortletFragment錛岄櫎浜哖ortletFragment澶栵紝<br />聽聽聽聽聽聽聽 鍏跺畠Fragment鐨勫鐞嗗ぇ鑷翠笂鏄竴鏍風殑錛?br />聽聽 Iterator childIterator = fragment.getChildFragments().iterator();</font> </p> <p> <font face="Arial">聽聽 // 閬嶅巻瀛恌ragment, 騫惰皟鐢ㄥ叾鏈嶅姟鏂規硶銆?br />聽聽 while (childIterator.hasNext()) {<br />聽聽聽聽聽聽 Fragment subfragment = (Fragment)childIterator.next();<br />聽聽聽聽聽聽 if (subfragment instanceof AbstractNavigationFragment)<br />聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽 subfragment.service(request, response);<br />聽聽聽聽聽聽聽聽聽聽 break;<br />聽聽聽聽聽聽 }<br />聽 }</font> </p> <p> <font face="Arial">涓夈丳ortal澶勭悊嫻佺▼</font> </p> <p> <font face="Arial">聽 鍏堟潵鐪嬬湅Portlet鐨勫垵濮嬪寲, 涓昏鏄粠閰嶇疆鏂囦歡涓鍙朠ortlet瀹氫箟銆?br />聽 PortletFragment.init()</font> </p> <p> <font face="Arial">聽聽聽聽聽 // 璇誨彇Portlet鐨勫疄浣揑d, 鍦╬ageregistry.xml涓敱portlet灞炴ф寚瀹?<br />聽聽聽聽聽 String portletEntityId = getInitParameters().getString("portlet");</font> </p> <p> <font face="Arial">聽聽聽聽聽 // 璇誨彇Portlet瀹炰綋. portlet瀹炰綋鍦╬ortletentityregistry.xml涓畾涔?<br />聽聽聽聽聽 PortletEntity portletEntity = PortletEntityRegistry.getPortletEntity(...);</font> </p> <p> <font face="Arial">聽聽聽聽聽 // portletentityregistry.xml<br />聽聽聽聽聽 銆坧ortlet-entity-registry銆?br />聽聽聽聽聽聽聽 銆坅pplication id="3"銆壜?// 瀵瑰簲PortletApplicationEntity<br />聽聽聽聽聽聽聽聽聽聽 銆坉efinition-id銆塼estsuite銆?definition-id銆?br />聽聽聽聽聽聽聽聽聽聽 銆坧ortlet id="1"銆壜?// 瀵瑰簲PortletEntity<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坉efinition-id銆塼estsuite.TestPortlet1銆?definition-id銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧references銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ref-name銆塗estName4銆?pref-name銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ref-value銆塗estValue4銆?pref-value銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坮ead-only銆塼rue銆?read-only銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?preferences銆?br />聽聽聽聽聽聽聽聽聽 銆?portlet><br />聽聽聽聽聽聽 銆?application><br />聽聽聽聽聽聽 銆坅pplication id="4"銆?br />聽聽聽聽聽聽聽聽聽 銆坉efinition-id>testsuite銆?definition-id銆?br />聽聽聽聽聽聽聽聽聽 銆坧ortlet id="1"銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坉efinition-id>testsuite.TestPortlet2銆?definition-id銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧references銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ref-name銆塗estName4銆?pref-name銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ref-value銆塗estValue4銆?pref-value銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坮ead-only銆塼rue銆?read-only銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?preferences銆?br />聽聽聽聽聽聽聽聽聽 銆?portlet銆?br />聽聽聽聽聽聽 銆?application銆?br />聽聽聽聽 銆?portlet-entity-registry銆?br />聽聽聽聽聽 //瑕佹敞鎰忚繖閲岀殑applicationid鍜宲ortletid涓巔ageregistry涓殑portletid鐨勫搴斿叧緋匯?/font> </p> <p> <font face="Arial">聽 // Portlet鏈嶅姟<br />聽 PortletFragment.service()</font> </p> <p> <font face="Arial">聽聽聽聽聽 //load protlet<br />聽聽聽聽聽 PortletContainer.portletLoad(...)</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 // 1.鍙栧緱PortletDefinition, 浠巔ortletentityregistry涓畾涔夌殑application涓鍙杙ortlet瀹氫箟.<br />聽聽聽聽聽聽聽 PortletDefinition def = portletWindow.getPortletEntity().getPortletDefinition();</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 // portlet.xml<br />聽聽聽聽聽聽聽 銆坧ortlet-app銆壜犅?// 瀵瑰簲PortletApplicationDefinition<br />聽聽聽聽聽聽聽聽聽聽 銆坧ortlet銆壜犅犅犅?// 瀵瑰簲PortletDefinition<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坉escription銆塗estSuiteDescription銆?description銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ortlet-name銆塗estPortlet1銆?portlet-name銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坉isplay-name銆塗est Portlet #1銆?display-name銆?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ortlet-class銆塷rg.apache.Pluto.portalImpl.portlet.TestPortlet銆?portlet-class銆?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坕nit-param><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坣ame銆塩onfig銆?name銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坴alue銆?WEB-INF/testsuite-config.xml銆?value銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?init-param銆?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坰upports銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坢ime-type銆塼ext/html銆?mime-type銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ortlet-mode銆塚IEW銆?portlet-mode銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ortlet-mode銆塃DIT銆?portlet-mode銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ortlet-mode銆塇ELP銆?portlet-mode銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?supports銆?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坧ortlet-info銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坱itle銆塗est Portlet #1銆?title銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坰hort-title銆塗est #1銆?short-title銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坘eywords銆塗est,Testing銆?keywords銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?portlet-info></font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坰ecurity-role-ref銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坮ole-name銆塒lutoTestRole銆?role-name銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆坮ole-link銆塼omcat銆?role-link銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 銆?security-role-ref銆?br />聽聽聽聽聽聽聽聽聽聽 銆?portlet銆?br />聽聽聽聽聽聽聽 銆坧ortlet-app銆?/font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 // 2.鍙栧緱PortletInvoker<br />聽聽聽聽聽聽聽 PortletInvoker invoker = PortletInvokerAccess.getPortletInvoker(def);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 // 3.鎵цload鎿嶄綔<br />聽聽聽聽聽聽聽 invoker.load(renderRequest, renderResponse)</font> </p> <p> <font face="Arial">聽聽聽聽聽 // render Portlet<br />聽聽聽聽聽 PortletContainer.renderPortlet(...);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 // 1. 鍙栧緱PortletInvoker<br />聽聽聽聽聽聽聽 PortletInvoker invoker = PortletInvokerAccess.getPortletInvoker(...);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽 // 2. 鎵цrender鎿嶄綔銆?br />聽聽聽聽聽聽聽 invoker.render(renderRequest, renderResponse);</font> </p> <p> <font face="Arial">聽聽聽聽聽 // 澶勭悊Title, support modes, </font> </p> <p> <font face="Arial">聽 // Portlet璋冪敤.<br />聽 ProtletInvoker.invoke(...)</font> </p> <p> <font face="Arial">聽聽聽聽聽 // 鍙栧緱Portlet搴旂敤鐨刣ispatcher.<br />聽聽聽聽聽 ServletDefinition servletDefinition = portletDefinition.getServletDefinition();<br />聽聽聽聽聽 ServletContext servletContext = servletConfig.getServletContext();<br />聽聽聽聽聽 RequestDispatcher dispatcher = servletDefinition.getRequestDispatcher(servletContext);</font> </p> <p> <font face="Arial">聽聽聽聽聽 // 璁劇疆灞炴? METHOD_ID涓哄埆瀵瑰簲load, render鍜宎ction銆?br />聽聽聽聽聽 servletRequest.setAttribute(Constants.METHOD_ID, methodID);<br />聽聽聽聽聽 servletRequest.setAttribute(Constants.PORTLET_REQUEST, portletRequest);<br />聽聽聽聽聽 servletRequest.setAttribute(Constants.PORTLET_RESPONSE, portletResponse);</font> </p> <p> <font face="Arial">聽聽聽聽聽 // 璋冪敤Portlet聽 <br />聽聽聽聽聽 dispatcher.include(servletRequest, servletResponse);</font> </p> <p> <font face="Arial">鍥涖丳ortlet澶勭悊嫻佺▼</font> </p> <p> <font face="Arial">聽 鍦≒ortlet搴旂敤鐨剋eb.xml涓紝瀹氫箟浜哖ortletServlet涓篜ortlet鐨凷ervlet錛屽畠鐢眃ispatch鏂規硶緇熶竴榪涜璇鋒眰澶勭悊.</font> </p> <p> <font face="Arial">聽 PortletServlet.dispatch(...)</font> </p> <p> <font face="Arial">聽聽聽聽 // 璁劇疆portletConfig.<br />聽聽聽聽 request.setAttribute(org.apache.Pluto.Constants.PORTLET_CONFIG, portletConfig);</font> </p> <p> <font face="Arial">聽聽聽聽 Integer method_id = (Integer)request.getAttribute(Constants.METHOD_ID);<br />聽聽聽聽 if (method_id == Constants.METHOD_RENDER)<br />聽聽聽聽 {<br />聽聽聽聽聽聽聽聽 renderRequest = (RenderRequest)request.getAttribute(Constants.PORTLET_REQUEST);<br />聽聽聽聽聽聽聽聽 renderResponse = (RenderResponse)request.getAttribute(Constants.PORTLET_RESPONSE);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽 // prepare container objects to run in this webModule<br />聽聽聽聽聽聽聽聽 prepareRenderRequest(renderRequest, request);<br />聽聽聽聽聽聽聽聽 prepareRenderResponse(renderResponse, request, response);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽 portletClass.render(renderRequest,renderResponse);<br />聽聽聽聽 }<br />聽聽聽聽 else if (method_id==org.apache.Pluto.Constants.METHOD_ACTION)<br />聽聽聽聽 {<br />聽聽聽聽聽聽聽聽 actionRequest = (ActionRequest)request.getAttribute(Constants.PORTLET_REQUEST);<br />聽聽聽聽聽聽聽聽 actionResponse = (ActionResponse)request.getAttribute(Constants.PORTLET_RESPONSE);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽 // prepare container objects to run in this webModule<br />聽聽聽聽聽聽聽聽 prepareActionRequest(actionRequest, request);<br />聽聽聽聽聽聽聽聽 prepareActionResponse(actionResponse, request, response);</font> </p> <p> <font face="Arial">聽聽聽聽聽聽聽聽 portletClass.processAction(actionRequest,actionResponse);<br />聽聽聽聽 }<br />聽聽聽聽 else if (method_id == org.apache.Pluto.Constants.METHOD_NOOP)<br />聽聽聽聽 {<br />聽聽聽聽聽聽聽聽 //nothing to do<br />聽聽聽聽 }<br />聽聽聽聽 //娉? portletClass鍗充負portlet鐨勫叿浣撳疄鐜扮被銆?/font> </p> <p> <font face="Arial">聽聽聽聽 鑷蟲錛岃姹傚氨鐢眕ortlet榪涜澶勭悊浜嗐?/font> </p> <p> <font face="Arial">浠庝笂闈㈢殑嫻佺▼鍙互鐪嬪嚭錛孭luto灝辨槸灝嗚姹傚垎媧懼埌欏甸潰涓婄殑鍚勪釜portlet錛宲ortlet鏍規嵁method鎵ц鐩稿簲鎿嶄綔錛?/font> </p> <p> <font face="Arial">鏈鍚庣敱Pluto灝嗗畠浠鐞嗙殑緇撴灉鎸夌壒瀹氬竷灞榪涜鏄劇ず銆?/font> </p> </td> </tr> </tbody> </table> </div> <img src ="http://www.tkk7.com/zhuyan/aggbug/106714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/zhuyan/" target="_blank">鏈卞博</a> 2007-03-27 17:11 <a href="http://www.tkk7.com/zhuyan/articles/106714.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Pluto鏄竴涓弧瓚砅ortlet API瑙勮寖鐨凱ortlet瀹瑰櫒鐨勫疄鐜?/title><link>http://www.tkk7.com/zhuyan/articles/105752.html</link><dc:creator>鏈卞博</dc:creator><author>鏈卞博</author><pubDate>Fri, 23 Mar 2007 02:37:00 GMT</pubDate><guid>http://www.tkk7.com/zhuyan/articles/105752.html</guid><wfw:comment>http://www.tkk7.com/zhuyan/comments/105752.html</wfw:comment><comments>http://www.tkk7.com/zhuyan/articles/105752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/zhuyan/comments/commentRss/105752.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/zhuyan/services/trackbacks/105752.html</trackback:ping><description><![CDATA[ <p>Pluto鏄竴涓弧瓚砅ortlet API瑙勮寖鐨凱ortlet瀹瑰櫒鐨勫疄鐜幫紝瀹冧負寮鍙戣呮彁渚涗簡涓涓繍琛?portlets鐨勫伐浣滃鉤鍙般傜劧鑰岋紝濡傛灉娌℃湁涓涓┍鍔ㄥ櫒錛坉river錛夛紝涔熷氨鏄疨ortal錛岀殑鏀寔鐨勮瘽錛?榪愯鍜屾祴璇昉ortlet瀹瑰櫒灝嗛潪甯鎬箣楹葷儲銆侾luto鏈韓涔熸彁渚涗簡涓涓畝鍗曠殑Portal妯″潡錛岃妯″潡浠?浠呮槸涓轟簡婊¤凍Portlet瀹瑰櫒鍜孞SR 168鐨勯渶瑕佽屽啓鐨勩傚鏋滀綘闇瑕佷竴涓垚鐔熺殑Portal錛岃鍙傝?<a class="newWindow" title="New Window" target="_blank">Jetspeed</a>欏圭洰銆侸etspeed欏圭洰鍏蟲敞鐨勬槸Portal鏈韓錛岃屼笉鏄疨ortlet瀹瑰櫒銆?</p> <p>鍥?鏄疨ortal鐨勫熀鏈綋緋葷粨鏋勫浘銆侾ortal Web Application澶勭悊瀹㈡埛鐨勮姹傦紝浠庡鎴風殑褰撳墠 欏典腑鎻愬彇鍑簆ortlets錛岀劧鍚庤皟鐢╬ortlet瀹瑰櫒鏉ヨ幏寰楁瘡涓涓猵ortlet鐨勫唴瀹廣侾ortal閫氳繃 Portlet瀹瑰櫒鐨処nvoker API鏉ヨ闂畃ortlet瀹瑰櫒銆傝繖浜汚PI鏄痯ortlet瀹瑰櫒鐨勪富瑕佽皟鐢ㄦ帴鍙o紝 瀹冧滑涓篜ortal鎻愪緵浜嗕竴浜涘熀浜庤姹傜殑鏂規硶鏉ヨ皟鐢╬ortlet銆傚鍣ㄧ殑浣跨敤鑰咃紙<i>鍗砅ortal錛岃瘧鑰?娉?/i>錛夊繀欏誨疄鐜皃ortlet瀹瑰櫒鐨凜ontainer Provider SPI錛圫ervice Provider Interface錛夊洖璋冩帴鍙o紝鏉ヤ負portlet瀹瑰櫒鎻愪緵涓嶱ortal鐩稿叧鐨勪俊鎭傛渶鍚庯紝portlet瀹瑰櫒閫?榪嘝ortlet API璋冪敤鎵鏈夌殑portlets銆?</p> <p> <img alt="" src="http://people.apache.org/~zheng/pluto/chinese/developer/images/portal_arch.jpg" /> <br /> <br /> <b>鍥?錛氫竴涓泦鎴愪簡Pluto鐨勭畝鍗昉ortal</b> <br /> <br /> </p> <div id="vnzt7jv" class="section"> <a name="Portlet瀹瑰櫒"> </a> <h2>Portlet瀹瑰櫒</h2> <p>Portlet瀹瑰櫒鏄痯ortlets鐨勮繍琛屾椂鐜錛屼篃鏄瘡涓涓狿ortal鐨勬牳蹇冪粍浠躲侾ortlet瀹瑰櫒闇瑕佽幏 鍙栨湁鍏砅ortal鏈韓鐨勪竴浜涗俊鎭紝榪樺繀欏婚噸鐢≒ortal鐨勪竴浜涘熀鏈唬鐮併傚洜姝わ紝Portlet瀹瑰櫒鍙互 淇濊瘉鑷繁涓庡叾瀹冪殑Portal緇勪歡涔嬮棿鏄畬鍏ㄥ垎寮鐨勩備篃灝辨槸璇達紝浣犲彲浠ユ妸涓涓嫭绔嬬殑Portlet瀹瑰櫒 鎻掑叆鍒頒換浣曚竴涓狿ortal涓幓錛屽彧瑕佸畠鍙互婊¤凍Portlet瀹瑰櫒鐨勮姹傦紝姣斿瀹炵幇浜嗘墍鏈夌殑SPI銆?</p> <p>Portlet瀹瑰櫒鐨処nvoker API錛堜篃琚О涓鴻繘鍏ョ偣錛夋槸Portlet瀹瑰櫒鐨勪富瑕佽皟鐢ㄦ帴鍙c傝繖浜汚PI鍖?鍚玃ortlet瀹瑰櫒鐨勭敓鍛藉懆鏈熸帶鍒舵柟娉曪紙init()錛宒estroy()錛夊拰鍩轟簬璇鋒眰鐨勮皟鐢ㄦ柟娉?錛坕nitPage()錛宲erformTitle()錛宲ortletService()絳夌瓑錛夈傜敱浜嶱ortlet瀹瑰櫒鏈緇堟槸 鍘昏皟鐢ㄤ竴涓猵ortlet錛屾晠榪欎簺鏂規硶鐨勭鍚嶅拰Portlet API鐨勪富瑕乸ortlet鎺ュ彛寰堢被浼鹼紝闄や簡涓涓?欏婚澶栦紶鍏ョ殑portlet ID銆侾ortlet瀹瑰櫒鍙互閫氳繃榪欎釜棰濆浼犲叆鐨刾ortlet ID鍙傛暟鏉ュ喅瀹氳皟鐢?鍝竴涓猵ortlet銆?</p> <p>闄や簡鍙互浣跨敤Invoker API鏉ヨ皟鐢≒ortlet瀹瑰櫒澶栵紝Portal榪樺繀欏誨疄鐜癙ortlet瀹瑰櫒瀹氫箟鐨凷PI銆?鍥犳錛屽弬鑰冨疄鐜板紩鍏ヤ簡鈥滃鍣ㄦ湇鍔♀濈殑姒傚康錛氬鍣ㄦ湇鍔$敤鏉ュ畾涔変竴浜涜兘澶熷湪瀹瑰櫒涓敞鍐岀殑鍙彃鐨勭粍浠訛紝 榪欎簺緇勪歡瑕佷箞鎻愪緵涓浜涘熀鏈殑鍔熻兘錛岃涔堝瀹瑰櫒榪涜鎵╁睍銆侾luto鍙傝冨疄鐜板畾涔変簡涓嬮潰榪欎簺鍐呭緩鐨?瀹瑰櫒鏈嶅姟錛堝墠鍥涗釜鏄繍琛孭ortlet瀹瑰櫒鎵蹇呴』瀹炵幇鐨勶紝鑰岀浜斾釜鍒欐槸鍙夌殑錛夛細 </p> <p> </p> <ul> <li> <b>Information Provider錛堜俊鎭彁渚涜咃級</b>錛氫負Portlet瀹瑰櫒鎻愪緵鍏充簬Portal鍙?鍏舵鏋剁殑淇℃伅銆傞氳繃璇ユ帴鍙e彧鑳藉鑾峰緱涓浜涘凡鐭ョ殑鎴栧瓨鍦≒ortal涓殑淇℃伅銆傝繖浜涗俊鎭寘鎷甫 瀵艱埅鐘舵侊紙navigational state錛夌殑URL鐢熸垚銆乸ortlet涓婁笅鏂囷紙portlet context錛夈?portlet妯″紡錛坧ortlet mode錛夊拰紿楀彛鐘舵侊紙window state錛夋帶鍒躲? </li> <li> <b>Factory Manager錛堝伐鍘傜鐞嗚咃級</b>錛氬畾涔変簡濡備綍閫氳繃宸ュ巶鑾峰緱涓涓疄鐜幫紙涓鑸殑 Portal搴旇宸茬粡瀹炵幇浜嗚繖鏍風殑鎺ュ彛錛夈? </li> <li> <b>Log Service錛堟棩蹇楁湇鍔★級</b>錛氬畾涔変簡杈撳嚭鏃ュ織鐨勬柟娉曪紙涓鑸殑Portal搴旇宸茬粡瀹?鐜頒簡榪欐牱鐨勬帴鍙o級銆? </li> <li> <b>Config Service錛堥厤緗湇鍔★級</b>錛氬畾涔変簡濡備綍鑾峰緱閰嶇疆鍊鹼紙涓鑸殑Portal搴旇宸?緇忓疄鐜頒簡榪欐牱鐨勬帴鍙o級銆? </li> <li> <b>Property Manager錛堝睘鎬х鐞嗚咃紝鍙夛級</b>錛氳鏈嶅姟璁㏄ortal鍙互鑾峰緱JSR 168 瑙勮寖涓畾涔夌殑灞炴х殑鍊箋?</li> </ul> <p> </p> <p>涓ユ牸鐨勮錛孭ortlet Object Model錛圥ortlet瀵硅薄妯″瀷錛変篃鏄竴涓猄PI錛屼絾涓庡叾瀹冪殑SPI鐩告瘮錛?瀹冨鍦ㄤ竴涓壒孌婄殑浣嶇疆涓娿傚洜姝ゆ垜浠笉鎶婂畠鐪嬫垚鏄鍣ㄦ湇鍔$殑涓閮ㄥ垎錛屽洜涓哄畠澶勭悊鎵鏈夌殑portlet 瀵硅薄錛屽茍鍖呭惈浜嗕竴浜涙販鏉傜殑鎺ュ彛銆?</p> <p> <img alt="" src="http://people.apache.org/~zheng/pluto/chinese/developer/images/pluto_arch.jpg" /> <br /> <br /> <b>鍥?錛歅ortlet瀹瑰櫒鐨勪綋緋葷粨鏋?/b> <br /> <br /> </p> </div> <div id="9hnt9xt" class="section"> <a name="Portlet鐨勯儴緗?> </a> <h2>Portlet鐨勯儴緗?/h2> <p>Portlet瀹瑰櫒鏄瀯寤哄湪Servlet瀹瑰櫒涔嬩笂鐨勶紝鎵浠ュ畠鍙互閲嶇敤Servlet瀹瑰櫒鐨勮澶氬姛鑳姐備負浜嗚揪鍒?榪欎竴鐐癸紝portlet瀹瑰櫒蹇呴』鎶婁竴浜泂ervlet鐨勫睘鎬ф敞鍏ュ埌姣忎竴涓猵ortlet搴旂敤鐨剋ar鏂囦歡涓紝濡?鍥?鎵紺恒侾ortlet緇勪歡鐨勯儴緗插櫒灝嗗湪鍘熷厛鐨剋ar鏂囦歡涓敞鍏ヤ竴涓柊鐨勬垨鑰呬慨鏀硅繃鐨剋eb.xml錛屽啀 涓烘瘡涓猵ortlet娉ㄥ叆涓涓猻ervlet鍖呰9鍣紝浠ユ浣滀負璋冪敤鐐廣傜劧鍚庯紝portlet閮ㄧ講鍣ㄥ皢鎶婅繖涓慨 鏀硅繃鐨剋ar鏂囦歡浼犵粰搴旂敤鏈嶅姟鍣ㄧ殑閮ㄧ講鍣紝浠ユ鏉ユ妸瀹冮儴緗插埌搴旂敤鏈嶅姟鍣ㄧ殑緋葷粺涓傚綋涓涓?portlet琚皟鐢ㄦ椂錛宲ortlet瀹瑰櫒灝嗚皟鐢ㄦ敞鍏ョ殑servlet鍖呰9鍣紝鎶婅繖浣滀負琚儴緗茬殑portlet鐨?war鏂囦歡鐨勮繘鍏ョ偣銆?</p> <p> <img alt="" src="http://people.apache.org/~zheng/pluto/chinese/developer/images/portlet_deployment.jpg" /> <br /> <br /> <b>鍥?錛氬弬鑰冨疄鐜頒腑portlet鐨勯儴緗?/b> <br /> <br /> </p> </div> <div id="lvxrntb" class="section"> <a name="Pluto鍜學SRP鏍囧噯"> </a> <h2>Pluto鍜學SRP鏍囧噯</h2> <p>JSR 168瑙勮寖鍜學eb Service for Remote Portlets錛圵SRP錛夋爣鍑嗘湁楂樺害鐨勪竴鑷存с傝繖涓?涓悓鏃跺嚭鐜扮殑鏍囧噯閮藉彂甯冧簡寮鏀炬簮鐮佺殑瀹炵幇錛屽畠浠殑瀹炵幇閮藉畬鎴愪簡鍦ㄧ浉搴旂殑瑙勮寖涓畾涔夌殑鎵鏈夊繀瑕?鍔熻兘銆傝繖涓や釜鏍囧噯閮芥妸鑳藉緢濂界殑浜掔浉鍗忎綔浣滀負瀹冧滑鍏卞悓鐨勭洰鏍囥傚洜姝わ紝WSRP portlets鍦?portlet瀹瑰櫒涓棦鍙互浣滀負娑堣垂鑰呰繍琛岋紝涔熷彲浠ヤ綔涓虹敓浜ц呰繍琛屻?</p> <p>Pluto欏圭洰蹇呴』鏀寔鍦ㄤ竴涓狿ortal涓繍琛屽涓猵ortlet瀹瑰櫒銆傚洜姝わ紝Pluto Portlet瀹瑰櫒鍙互 琚嬈″垵濮嬪寲銆傛洿閲嶈鐨勬槸錛屽畠鍙互浠ヤ笉鍚岀殑鏂瑰紡榪愯錛屾瘡涓猵ortlet瀹瑰櫒閮戒嬌鐢ㄤ竴涓笉鍚岀殑SPI 瀹炵幇銆?</p> </div> <img src ="http://www.tkk7.com/zhuyan/aggbug/105752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/zhuyan/" target="_blank">鏈卞博</a> 2007-03-23 10:37 <a href="http://www.tkk7.com/zhuyan/articles/105752.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://6t23.com" target="_blank">亚洲一区精彩视频</a>| <a href="http://see13.com" target="_blank">亚洲国产av一区二区三区丶</a>| <a href="http://ljdst.com" target="_blank">亚洲精品第一综合99久久</a>| <a href="http://www-8812.com" target="_blank">午夜网站在线观看免费完整高清观看 </a>| <a href="http://wwwbi757.com" target="_blank">又黄又爽又成人免费视频</a>| <a href="http://2002tw.com" target="_blank">亚洲尹人九九大色香蕉网站</a>| <a href="http://ghdc5.com" target="_blank">免费国产叼嘿视频大全网站</a>| <a href="http://tj-zhongfa.com" target="_blank">国产亚洲美女精品久久久久狼</a>| <a href="http://zhaosifuwang.com" target="_blank">XXX2高清在线观看免费视频</a>| <a href="http://xmjcjc.com" target="_blank">亚洲国产成人片在线观看</a>| <a href="http://youkabaitiao.com" target="_blank">免费网站观看WWW在线观看</a>| <a href="http://8953y.com" target="_blank">亚洲av色影在线</a>| <a href="http://gstywy.com" target="_blank">无码国产精品一区二区免费式影视</a>| <a href="http://www-993789.com" target="_blank">亚洲不卡1卡2卡三卡2021麻豆</a>| <a href="http://6h6y.com" target="_blank">亚洲中文无码永久免费</a>| <a href="http://bxd888.com" target="_blank">亚洲人成自拍网站在线观看 </a>| <a href="http://qianmiu.com" target="_blank">人体大胆做受免费视频</a>| <a href="http://haohaoshuo.com" target="_blank">黑人大战亚洲人精品一区</a>| <a href="http://91vk.com" target="_blank">最好免费观看高清在线</a>| <a href="http://ydxcsh.com" target="_blank">亚洲黄色在线电影</a>| <a href="http://fense1.com" target="_blank">国产精品成人免费一区二区</a>| <a href="http://yulongfilm.com" target="_blank">亚洲乱码中文字幕在线</a>| <a href="http://dagongxing.com" target="_blank">亚洲av麻豆aⅴ无码电影</a>| <a href="http://luyifeile.com" target="_blank">青青操免费在线视频</a>| <a href="http://miyatb.com" target="_blank">亚洲视频精品在线观看</a>| <a href="http://yulongfilm.com" target="_blank">成人免费无码视频在线网站</a>| <a href="http://9v9av.com" target="_blank">成人a毛片视频免费看</a>| <a href="http://holdengong.com" target="_blank">亚洲国产婷婷六月丁香</a>| <a href="http://zgfxshop.com" target="_blank">亚欧免费视频一区二区三区 </a>| <a href="http://jhmydxx.com" target="_blank">成av免费大片黄在线观看</a>| <a href="http://tom-erc20.com" target="_blank">亚洲成人在线电影</a>| <a href="http://jastrelax.com" target="_blank">成年美女黄网站色大免费视频</a>| <a href="http://www66susu.com" target="_blank">色欲aⅴ亚洲情无码AV</a>| <a href="http://yese889.com" target="_blank">国产亚洲精品一品区99热</a>| <a href="http://aicbbs.com" target="_blank">青春禁区视频在线观看直播免费 </a>| <a href="http://imqun.com" target="_blank">在线观看亚洲人成网站</a>| <a href="http://xzdlgp.com" target="_blank">老司机永久免费网站在线观看</a>| <a href="http://vip98888.com" target="_blank">九九99热免费最新版</a>| <a href="http://shmtweld.com" target="_blank">亚洲另类视频在线观看</a>| <a href="http://vvihh.com" target="_blank">亚洲色欲久久久久综合网</a>| <a href="http://16688shop.com" target="_blank">免费无码中文字幕A级毛片</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>