Skip Headers
Oracle® Fusion Middleware Content Management Guide for Oracle WebLogic Portal
10g Release 3 (10.3.4)

Part Number E14230-02
Go to Documentation Home
Home
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

12 Using Syndicated Feeds

A syndicated feed, also called a web feed, provides users with frequently updated content. Syndicated feeds allow you to publish content to a third-party feed reader. For example, content publishers can configure a feed reader on their local machine that reads a syndicated feed that includes all content that is ready to publish. By subscribing to a syndicated feed, using a feed reader or aggregator, a user stays up to date on content changes.

WebLogic Portal provides a Syndication Producer Servlet and several preconfigured syndicated feeds that you can modify. You can also create your own custom feeds. The preconfigured syndicated feeds are compatible with RSS feed technology and consist of URL formats that can be read by most RSS readers. They conform to the RSS 2.0 Specification.

Note:

Internet Explorer 6 does not support syndicated feeds.

This chapter includes the following sections:

12.1 Using and Modifying the Preconfigured Syndicated Feeds

The preconfigured syndicated feeds include basic examples of using display template JSPs to select and display content. These JSPs display general metadata, such when the content was created, who created it, and the name of the content node. They are generic display templates that show the information in a simple format.

Tip:

Use these basic preconfigured syndicated feeds as a starting place for developing your own custom syndicated feeds.

12.1.1 URL Format for Syndicated Feeds

The URL format for syndicated feeds is shown in Example 12-1.

Example 12-1 URL Format for Syndicated Feeds

http://<Administration Console Host Machine Name>: <Administration Console Port
default is 7001)>/<WebApp>/SyndicationProducer?feedName=<feedName>
&syndicationStyleName=<styleName>

Table 12-1 lists the three preconfigured syndicated feed URLs provided with WebLogic Portal.

Table 12-1 Pre-Configured Syndicated Feeds

Feed Name Description Syndicated Feed URL

Latest Content

Shows the most recent files added to the repository.

http://<hostname>:7001/<WebApp>/SyndicationProducer?feedName=LatestContent&syndicationStyleName=rss

Need to Approve

Shows the documents that need approval before publishing.

http://<hostname>:7001/<WebApp>/SyndicationProducer?feedName=NeedToApprove&syndicationStyleName=rss

Directory Contents

Shows the files in a particular directory with the latest files at the top of the directory.

http://<hostname>:7001/<WebApp>/SyndicationProducer?feedName=DirectoryContents&syndicationStyleName=rss

12.1.2 Changing the Search Results Using a URL

If you want to change the search results for a particular feed, you can modify its URL. Modifying the URL allows you to pass parameters into the Syndication Producer Servlet without modifying the syndication configuration file, which sets the parameters passed to the Syndication Producer Servlet. For example, to change the number of articles displayed in a syndicated feed and the reader type, you would add the searchMaxResults parameter between ampersands and change the value of the syndicationStyleName to atom. The resulting URL looks like:

http://www.bea.com:7001/myWebApp/SyndicationProducer?feedName=LatestContent&searchMaxResults=5&syndicationStyleName=atom

Note that the URL follows the format in Example 12-1. The available parameters are listed in Table 12-4. Be sure to separate each parameter with an ampersand.

Note:

Any parameters not set in the URL should be set in the syndication configuration (wlp-syndication-config) file. Otherwise, you may get undesirable results or failure. For example, if the searchMaxResults parameter is not set anywhere, the syndicated feed could display hundreds of entries.

For more information about the wlp-syndication-config.xml file, see Section 12.1.3.4, "Modifying the Syndication Configuration File."

Modifying the URL is especially useful during development. You can use the URL to help determine and test the parameters that you want to pass into the Syndication Producer Servlet. This saves you time because changing syndication configuration file requires redeployment of the application. After establishing the correct parameters, you can edit the wlp-syndication-config.xml file and redeploy.

The parameters passed in through a URL have precedence over parameters passed in from the syndication configuration file. The Syndication Producer Servlet sets the priority in the following order:

  1. URL query parameters

  2. Syndication-feed settings in wlp-syndication-config.xml

  3. Syndication-style settings in wlp-syndication-config.xml

12.1.3 Modifying the Preconfigured Syndicated Feeds

To modify the preconfigured syndicated feeds, you need to change the following files:

  • Syndicated Feed JSPs – These files retrieve information from the repository and display the feed and content of each item.

  • Syndication Configuration file – The wlp-syndication-config.xml file sets the parameters passed to the Syndication Producer Servlet and maps entries to the wlp-template-config.xml file.

  • Display Template Configuration file – The wlp-template-config.xml file selects which JSPs used for the syndicated feed.

12.1.3.1 About the Syndicated Feed JSPs

WebLogic Portal contains four preconfigured JSPs. The first three JSPs generate the list of content items, and the fourth generates the content itself. See Figure 12-1 and Figure 12-2.

  • rss_header.jsp – Header, which is the title of the syndicated feed, such as All Dev2Dev Articles.

  • rss_item.jsp – List item, which is the individual listing for each article, specifically the items that the query finds. If the query finds six articles, this JSP is called six times.

  • rss_footer.jsp – Footer, which closes the list.

  • rss_detailed_view.jsp – Content or article, which is called when a user clicks a list item.

Figure 12-1 RSS Feed Example

Description of Figure 12-1 follows
Description of "Figure 12-1 RSS Feed Example"

Figure 12-2 shows the article itself, which is displayed by the rss_detailed_view.jsp.

Figure 12-2 Article Displayed by rss_detailed_view.jsp

Description of Figure 12-2 follows
Description of "Figure 12-2 Article Displayed by rss_detailed_view.jsp"

12.1.3.2 Modifying the Preconfigured Syndicated Feed JSPs

To modify the preconfigured syndicated feeds JSPs in Oracle Enterprise Pack for Eclipse, from the Merged Projects View, copy the RSS JSP files from the myPortalWebProject/rss folder to your web project, and then edit the files. For information on how to use Oracle Enterprise Pack for Eclipse for this purpose, see "Using the Merged Projects View" in the Oracle Fusion Middleware Portal Development Guide for Oracle WebLogic Portal.

12.1.3.3 Retrieving Content

In content management, the two types of repositories are published and versioned. The nodes in a published repository provide only a single version of information; the user of a syndicated feed sees that information every time the content node is updated. The nodes in a versioned repository provide multiple versions that can be searched and managed. When you enable library services, your content is automatically versioned and a new copy of the content is saved whenever you check in content to the repository. Generally, you use versioned repositories in a workflow, where a manager approves the content before it is published. For more information about library services, see Section 10.5, "Using Versioning."

12.1.3.3.1 Retrieving Information from a Published Repository

To call a node in a published repository, you set the search type in the syndication configuration file (wlp-syndication-config.xml) to pubmeta:

<search-type>pubmeta</search-type>

When the Syndication Producer Servlet calls the JSP to retrieve data from a content node, in the JSP's scriptlet, the request attribute of the node in the JSP's scriptlet is set to not null:

if(request.getAttribute("node") != null){ 

Example 12-4 shows the entire wlp-syndication-config.xml file and Example 12-2 shows an example JSP (rss_item.jsp).

12.1.3.3.2 Retrieving Information from a Versioned Repository

To call a versioned node, you set the search type in the syndication configuration file (wlp-syndication-config.xml) to vermeta:

<search-type>vermeta</search-type>

When the Syndication Producer Servlet calls the JSP to retrieve data from a versioned node, the request attribute version in the JSP's scriptlet is set to not null:

else if (request.getAttribute("version") != null){ 

Example 12-4 shows the entire wlp-syndication-config.xml file and Example 12-2 shows an example JSP (rss_item.jsp).

12.1.3.3.3 Example JSP

The following example JSP contains the logic to render the syndication feed. The Syndication Producer servlet uses the content query to retrieve the data from content management. The JSP displays the results returned from the content query.

Example 12-2 Example of a Syndicated Feed JSP for an Item—rss_item.jsp

<%@page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="com.bea.content.Node" %>
<%@ page import="com.bea.content.ContentContext" %>
<%@ page import="com.bea.content.virtual.version.Version" %>
<%@ page import="com.bea.content.federated.ContentManagerFactory"%>
<%@ page import="com.bea.content.federated.INodeManager"%>
<%

String path = request.getRequestURL().toString();
path = path.substring(0, path.indexOf(request.getContextPath()));
request.setAttribute("rootURL", path+"/"+ request.getContextPath());

   if(request.getAttribute("node") != null){
      Node node = (Node)request.getAttribute("node");
      if(node != null){
      String nodePath = node.getPath();
      request.setAttribute("parameters", request.getAttribute("rootURL") +
         "/ShowProperty?nodePath="+nodePath);
      request.setAttribute("path", request.getAttribute("rootURL") +
         "/ShowProperty?nodePath="+nodePath);
      request.setAttribute("title", node.getName());
   }
   else{
      request.setAttribute("parameters", "#");
      request.setAttribute("path", "Node could not be found from path");
      request.setAttribute("title", "Null Node Exception");
   }
}
else if (request.getAttribute("version") != null){
      Version version = (Version)request.getAttribute("version");
      if(version != null){
         INodeManager nodeMgr = ContentManagerFactory.getNodeManager();
         Node node = nodeMgr.getNodeByUUID(new ContentContext(),
            version.getNodeId());
         if(node != null){
            String nodePath = node.getPath();
            request.setAttribute("parameters", request.getAttribute("rootURL") +
               "/ShowProperty/"+nodePath+"||versionId="+version.getVersionName());
            request.setAttribute("path", request.getAttribute("rootURL") +
               "/ShowProperty/"+nodePath+"||versionId="+version.getVersionName());
            request.setAttribute("title", node.getName());
         }
         else{
            request.setAttribute("parameters", "#");
            request.setAttribute("path", "Node could not be found from path");
            request.setAttribute("title", "Null Node Exception");
      }
      else{
         request.setAttribute("fullURL", "Version attribute was null");
         request.setAttribute("title", "Null Version");
         request.setAttribute("description", "Null Node");
      }
}
%>
<item>
   <title>${title}</title>
   <link>${fullURL}</link>
   <description>${description}</description>
</item>
12.1.3.3.4 Displaying the Contents of an Item

As previously mentioned, the JSP selects the data from the repository and displays it. The end of Example 12-2 contains the following HTML, which displays each item in a syndicated list:

<item>
   <title>${title}</title>
   link>${fullURL}</link>
   <description>${description}</description>
</item>

The rss_detailed_view.jsp contains the HTML that displays the contents of the item in the list, that is, the article itself, as shown in Example 12-3.

Example 12-3 Example Syndicated Feed JSP for an Article—rss_detailed_view.jsp.

...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>View Details: ${title}</title>
<style>
   body {background-color:#FFFFFF; font-family:arial, sans-serif;
      font-size: 1em; color:#000000;}
   p td {font-family:arial, sans-serif; font-size: 100%; color:#000000;}
   h1 {font-size:120%; border-bottom: 1px solid #CCCCCC;}
   .notetext {font-size:80%; width: 50%; padding:10px; border: 1px solid
   #FFCC33; background-color: #FFFFCC}
</style>
</head>
<body>
   <h1>View Details: ${title}</h1>
   <div class="notetext">In this view, you can display useful properties for
      the selected feed item, and format them with the display template. By
      default, we display a few system properties.</div>
   <p>Location in Repository: ${nodePath}</p>
   <p>Created on: ${createdDate}</p>
   <p>Created by: ${createdBy}</p>
   <p>Primary Property Details: <a href="${parameters}">View Binary</a></p>
</body>
</html>

12.1.3.4 Modifying the Syndication Configuration File

The syndication configuration file sets the parameters passed to the Syndication Producer Servlet and maps the Syndication Feed JSPs to a namespace, which allows you to change which display templates are used.

To modify the preconfigured syndicated feeds in Oracle Enterprise Pack for Eclipse, from the Merged Projects View, copy the WEB-INF\wlp-syndication-config.xml file to your web project, and then edit the file. For information on how to use Oracle Enterprise Pack for Eclipse for this purpose, see "Working with the Merged Projects View" in the Oracle Fusion Middleware Portal Development Guide for Oracle WebLogic Portal.

Example 12-4 shows the syndication configuration file (wlp-syndication-config.xml) for the preconfigured syndicated feeds.

Example 12-4 Example of a Syndication Configuration File (wlp-syndication-config.xml)

<?xml version="1.0"?>
<wlp-syndication-config xmlns="http://www.bea.com/ns/content/102/wlp-syndication-config">
   <syndication-feed>
      <name>LatestContent</name>
      <search-query>cm_nodeName like '*'</search-query>
      <search-type>pubmeta</search-type>
      <search-max-results>20</search-max-results>
      <search-sort-order>cm_createdDate desc</search-sort-order>
   </syndication-feed>
   <syndication-feed>
      <name>NeedToApprove</name>
      <search-query>cm_lifeCycleStatus = 3 &amp;&amp; cm_assignedToUser =
         requestProperty('DefaultRequestPropertySet', 'Remote
         User')</search-query>
      <search-type>vermeta</search-type>
   </syndication-feed>
   <syndication-feed>
      <name>DirectoryContents</name>
      <search-query>cm_path like '/WLP Repository/*'</search-query>
      <search-type>pubmeta</search-type>
      <search-max-results>20</search-max-results>
      <search-sort-order>cm_createdDate desc</search-sort-order>
   </syndication-feed>
   <syndication-style>
      <name>rss</name>
      <name-space>bea-rss</name-space>
      <channel-group-name>ContentRepoRSS</channel-group-name>
      <channel-template>RSSChannel</channel-template>
      <channel-header-view>channelHeader</channel-header-view>
      <channel-footer-view>channelFooter</channel-footer-view>
   </syndication-style>
   <syndication-item-style>
      <name>rss_detailed_view</name>
      <name-space>bea-rss</name-space>
      <item-view>detailedView</item-view>
   </syndication-item-style>
</wlp-syndication-config>
12.1.3.4.1 Search Types

There are two search types in the <syndication-feed> element, as shown in Example 12-4:

  • <search-type>pubmeta</search-type>

  • <search-type>vermeta</search-type>

These search types direct the Syndication Producer Servlet to query data from either a published (pubmeta) or versioned (vermeta) repository. The default search type is pubmeta.

Depending on the search type, either the node or versioned search property is set in the syndicated feed JSP (Example 12-2). Specifically, the node or version is set to not null.

  • pubmeta search type—if(request.getAttribute("node") != null){

  • vermeta search type—else if (request.getAttribute("version") != null){

The vermeta search type is most often used in a workflow. You can only use this search type in a managed repository, that is, a repository where a library services are enabled. For more information, see Section 10.2, "Working with WLP Repository Content When Using Library Services."

12.1.3.4.2 Syndication Configuration Options

The syndication configuration file for the preconfigured syndicated feeds offer a number of options. For example, you can change the order of results from descending to ascending. The available parameters are based on the XML schema shown in Example 12-6. The following parameters are available:

  • Table 12-2: Content Queries – Use these parameters to find the information to be displayed in the syndicated feed.

  • Table 12-3: RSS Channel Related Parameters – use these parameters to find the content template for creating the RSS channel header.

  • Table 12-4: RSS Item Related Parameters—use these parameters to find the content template for creating each RSS item.

Table 12-2 Content Queries

Parameter Description

feedName

The name of an RSS feed stored within wlp-syndication-config.xml.

syndicationStyleName

The name of the format to use, such as RSS, Atom, and so on. Stored within wlp-syndication-config.xml.

searchQuery

The content search expression.

searchType

The type of search to execute:

  • pubmeta—published metadata search (default)

  • vermeta—versioned metadata search

searchSortOrder

Sort order of search results.

searchMaxResults

The maximum number of results to return from a search.

nameSpace

The content template name space, which is used to look up content templates for both <content-name-space> and <template-name-space> within the wlp-template-config.xml. If not provided, defaults to bea-rss.


Table 12-3 RSS Channel Related Parameters

Parameter Description

channelGroupName

Content template group name.

channelTemplate

Content template name.

channelView

View name of the content template.


Table 12-4 RSS Item Related Parameters

Parameter Description

itemResourceName

Content template resource name.

itemRepositoryName

Content template repository name.

itemView

Content template view name.


12.1.3.5 Selecting a Display Template

The wlp-syndication-config.xml file contains entries that map to the display template JSPs in the wlp-template-config.xml file. For example, in the wlp-syndication-config.xml file (Example 12-4), the syndication-style elements point to corresponding elements (and JSPs) in the wlp-template-config.xml file (Example 12-5).

From the wlp-syndication-config.xml file:

<syndication-style>
   <name>rss</name>
   <name-space>bea-rss</name-space>
   <channel-group-name>ContentRepoRSS</channel-group-name>
   <channel-template>RSSChannel</channel-template>
   <channel-header-view>channelHeader</channel-header-view>
   <channel-footer-view>channelFooter</channel-footer-view>
</syndication-style>

From the wlp-template-config.xml file:

<view> 
   <name>channelHeader</name> 
   <uri>/rss/rss_header.jsp</uri> 
</view>

This design allows you to point to your own JSPs by making changes in the wlp-template-config.xml file. For example, to point to your header JSP you could change the URI from /rss/rss_header.jsp to /atom/atom_header.jsp.

To modify the preconfigured display template configuration file in Oracle Enterprise Pack for Eclipse, from the Merged Projects View, copy the WEB-INF\wlp-template-config.xml file to your web project, and then edit the file. For information on how to use Oracle Enterprise Pack for Eclipse for this purpose, see "Working with the Merged Projects View" in the Oracle Fusion Middleware Portal Development Guide for Oracle WebLogic Portal.

Example 12-5 Example of a Display Template Configuration File (wlp-template-config.xml)

<?xml version="1.0" ?> 
<wlp-template-config xmlns="http://www.bea.com/ns/p13n/90/wlp-template-config">
<content-repository>
   <name>*</name> 
   <default-template-uri>/rss/rss_item.jsp</default-template-uri> 
   <content-name-space> 
      <name>bea-rss</name> 
      <content-resource> 
         <name>*</name> 
         <default-template-uri>/rss/rss_item.jsp</default-template-uri>
         <view> 
            <name>detailedView</name> 
            <uri>/rss/rss_detailed_view.jsp</uri> 
         </view> 
      </content-resource> 
   </content-name-space> 
</content-repository> 
   <template-group> 
      <name>ContentRepoRSS</name> 
      <template-name-space> 
         <name>bea-rss</name> 
         <template> 
            <name>RSSChannel</name> 
            <default-template-uri>/rss/rss_header.jsp</default-template-uri> 
            <view> 
               <name>channelHeader</name> 
               <uri>/rss/rss_header.jsp</uri> 
            </view> 
            <view> 
               <name>channelFooter</name> 
               <uri>/rss/rss_footer.jsp</uri> 
            </view> 
         </template> 
      </template-name-space> 
   </template-group> 
</wlp-template-config>

12.2 Creating Custom Syndicated Feeds

It is likely that you want syndicated feeds customized to your organization. For example, you'll need to develop JSPs that display the portions of data in your content repositories that you want to show your users, such as the name of the article and author's name. Additionally, you probably want to present the information in a format consistent with the look-and-feel of your portal. You can either use one of the preconfigured syndicated feed JSPs as a starting point or build one from scratch.

Tip:

Be sure to read Section 12.1, "Using and Modifying the Preconfigured Syndicated Feeds" to help you understand how syndicated feeds work.

You can create syndicated feeds that are compatible with different readers, such as Atom. To speed your development process, you can use the same content query to retrieve information from your databases and present that content with different XML formats for different readers.

Because content repositories are connected to WebLogic Portal using the Virtual Content Repository, your JSP display templates can show data in any content repository as long as the repository is connected to the Virtual Content Repository. For more information, see Chapter 1, "Introduction."

12.2.1 Creating the Syndicated Feed JSPs

Syndicated feed JSPs contain the logic to render the syndicated feed.

Generally, you need to create four JSPs:

  • Header – Shows the title of the feed

  • Item – Lists each article

  • Footer – Closes the list

  • Detail – Displays the content of an individual item in the list

For information on creating JSPs, see the Oracle Enterprise Pack for Eclipse documentation.

After you develop your display templates (JSPs), you map them to a namespace using a display template configuration file (wlp-template-config.xml). Display templates are then referenced from the syndication configuration file (wlp-syndication-config.xml).

12.2.2 Map the Syndicated Feed JSPs to Display Templates

To map your display templates to a namespace, you create a wlp-template-config.xml file. Display templates are then referenced from a syndication configuration file (wlp-syndication-config.xml). For detailed information on how this works, see Section 12.1.3.5, "Selecting a Display Template."

For information about creating a wlp-template-config.xml file, see Section 11.1.2, "Creating a wlp-template-config.xml File." When creating a template configuration file in this way, in the Create XML File page, select Create XML file from scratch.

Figure 12-3 Create XML File

Description of Figure 12-3 follows
Description of "Figure 12-3 Create XML File"

For more information about display templates, see Chapter 11, "Using Display Templates."

12.2.3 Create a Syndication Configuration File

The syndication configuration file sets the parameters passed to the Syndication Producer Servlet and maps the Syndication Feed JSPs to a namespace, which allows you to select which display templates are used. For more information, see Section 12.1.3.5, "Selecting a Display Template."

Example 12-6 shows the XML schema for wlp-syndication-config.xml. It contains the valid attributes and tags you can use when configuring the wlp-syndication-config.xml file.

Example 12-6 Schema for the Syndication Configuration File

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.bea.com/ns/content/102/wlp-syndication-config"
elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="syndication-styleType">
   <xs:sequence>
      <xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
      <xs:element name="name-space" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-group-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-template" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-header-view" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-footer-view" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-resource-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-repository-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-view" type="xs:string" minOccurs="0"
         nillable="true"/>
   </xs:sequence>
</xs:complexType>
<xs:complexType name="syndication-configType">
   <xs:sequence>
      <xs:element name="syndication-feed" maxOccurs="unbounded"
         type="wlp:syndication-storeType" minOccurs="0" nillable="true"
         xmlns:wlp="http://www.bea.com/ns/content/102
         /wlp-syndication-config"/>
      <xs:element name="syndication-style" maxOccurs="unbounded"
         type="wlp:syndication-styleType" minOccurs="0" nillable="true"
         xmlns:wlp="http://www.bea.com/ns/content/102/
         wlp-syndication-config"/>
      <xs:element name="syndication-item-style" maxOccurs="unbounded"
         type="wlp:syndication-item-styleType" minOccurs="0" nillable="true"
         xmlns:wlp="http://www.bea.com/ns/content/102/
         wlp-syndication-config"/>
   </xs:sequence>
</xs:complexType>
<xs:complexType name="syndication-storeType">
   <xs:sequence>
      <xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
      <xs:element name="search-query" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="search-type" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="search-max-results" type="xs:int" minOccurs="0"
         nillable="true"/>
      <xs:element name="search-sort-order" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="name-space" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-group-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-template" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-footer-view" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="channel-header-view" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-resource-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-repository-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-view" type="xs:string" minOccurs="0"
         nillable="true"/>
   </xs:sequence>
</xs:complexType>
<xs:complexType name="syndication-item-styleType">
   <xs:sequence>
      <xs:element name="name" type="xs:string" minOccurs="0" nillable="true"/>
      <xs:element name="name-space" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-resource-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-repository-name" type="xs:string" minOccurs="0"
         nillable="true"/>
      <xs:element name="item-view" type="xs:string" minOccurs="0"
         nillable="true"/>
   </xs:sequence>
</xs:complexType>
<xs:element name="wlp-syndication-config" type="wlp:syndication-configType"
   xmlns:wlp="http://www.bea.com/ns/content/102/wlp-syndication-config"/>
</xs:schema>

12.3 Securing Syndicated Feeds

Usually, you control visitor access to portal resources by configuring visitor entitlements in the WebLogic Portal Administration Console. However, a malicious user who knows the correct URL can access the syndicated feed directly. If you want to secure your syndicated feeds, you must use Java EE security. Specifically, you use web.xml deployment descriptors to secure access to the Syndication Producer Servlet.

In following example, the web.xml deployment descriptors restrict any HTTP GET or POST requests from a URL in the form /SecureFeedProducer/*. These descriptors allow only users whose role is Administrators, Portal System Administrator, or AppTesters.

Example 12-7 Security Deployment Descriptors

<security-constraint>
   <web-resource-collection>
      <web-resource-name>Secure Syndication</web-resource-name>
      <description>The Secure Rss Feeds</description>
      <url-pattern>/SecureFeedProducer/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
   </web-resource-collection>
   <auth-constraint>
      <description>Administrators</description>
      <role-name>Administrators</role-name>
      <role-name>PortalSystemAdministrator</role-name>
      <role-name>AppTesters</role-name>
   </auth-constraint>
   <user-data-constraint>
      <transport-guarantee>NONE</transport-guarantee>
   </user-data-constraint>
</security-constraint>

For more information about security deployment descriptors, see "web.xml Deployment Descriptor Elements" in Developing Web Applications, Servlets, and JSPs for WebLogic Server in Oracle Fusion Middleware Developing Web Applications, Servlets, and JSPs for Oracle WebLogic Server.