The following sections discuss prerequisites that must be performed before Stardust can be deployed within a WebLogic application server.
A basic understanding of WebLogic Administration, Enterprise Application Archive (EAR), and Web Application Archive (WAR) files is required from this point forward.
Note
We we recommend to enable 2nd-level caching for production deployments to optimize
the performance of a secure JCR deployment. For details refer to section
Tuning by using Hazelcast and to chapter
Optimizing the Performance of secure JCR Deployments accordingly.
Before any activities can be done, download WebLogic from the WebLogic Download
Site. Once downloaded, install WebLogic onto the host server. The WebLogic installation
directory is referred to as %WEBLOGIC_HOME% from this point forward.
Additional WebLogic system properties can be set in the startup script. Refer to the WebLogic Documentation for more information regarding system properties.
Before you can configure the application server you have to create your server domain. For details on that, refer to the application server manual. Additionally, make sure that you have configured your domain to be able to start the server and you are running in development mode for the hot deployment functionality.
To achieve the carnot.ear file or needed war files provided by Stardust,
download one of the Maven archetype templates from the Stardust artifactory
matching your requirements.
The following deployment configurations for WebLogic are provided as archetypes:
ipp-archetype-wls11-ipp-ear (deprecated) - prepares an EAR deployment for
WebLogic 11 (aka 10.3.6) and provides a console environment for EJB.ipp-archetype-wls11-ipp-portal-war (deprecated) - prepares a WAR deployment
for WebLogic 11 (aka 10.3.6).ipp-archetype-wls12-ipp-ear - prepares an EAR deployment for
WebLogic 12c (aka 12.1.2) and provides a console environment for EJB.ipp-archetype-wls12-ipp-portal-war - prepares a WAR deployment
for WebLogic 12c (aka 12.1.2).Please refer to chapter Creating a Runtime Environment with Apache Maven in the Installation Guide section Other Archetypes of our Stardust Wiki Maven/Basic Setup page for details on how to retrieve these configurations.
WebLogic provides many third party JDBC libraries. If you plan to use a third-party
JDBC driver that is not installed with a WebLogic Server, you must update the WebLogic
Server's classpath to include the location of the JDBC driver classes. In order to do this create a new
%DOMAIN_HOME%/bin/setUserOverrides.cmd
set PRE_CLASSPATH=<path to drivers>\mysql-connector-java-5.1.34-bin.jar;<path to drivers>\derbyclient.jar
Please note that in case you use a WebLogic version earlier than 12, edit the existing setDomainEnv.cmd
file instead and extend it with this content.
For Unix environments you have to create a ${DOMAIN_HOME}/setUserOverrides.shsetDomainEnv.sh file in case you use a WebLogic version earlier than 12) with the following content:
#!/bin/sh export PRE_CLASSPATH=<path to drivers>\mysql-connector-java-5.1.34-bin.jar:<path to drivers>\derbyclient.jar
Please note that if you plan to use the JDBC drivers in more domains we recommend to use the approach described in section Modifying the Classpath of the WebLogic documentation.
In case you use Python in Stardust, you need to perform the following steps:
jython-standalone-2.7-b1-infinity02.jar%DOMAIN_HOME%/python-lib or extract the content of the lib folder that is within this JAR
to the same folder.Note
To download this jar file you need to register here for a trial account:
http://www.infinity.com/storefront/faces/procurement/solution-details.xhtml?solutionGuid=9996445b-abcc-4ec5-835e-f9200cd7e1e2.
After registration of a new account it takes a while until it has been processed. Compliance with US export
regulations needs to be ensured. Once you have an account you can procure a free 90 day trial license. As part of
the procurement you will be granted access to our Maven repository
https://infinity.sungard.com/repository from where you can
download the jar.
%DOMAIN_HOME%/bin/setUserOverrides.cmd in a Windows environment with the following
content:
set EXTRA_JAVA_PROPERTIES=-Dpython.path=%DOMAIN_HOME%\python-lib\jython-standalone-2.7-b1-infinity02.jar\Lib rem Uncomment the following line if the python files was extracted from jython-standalone-2.7-b1-infinity02.jar\Lib to %DOMAIN_HOME%\python-lib rem set EXTRA_JAVA_PROPERTIES=-Dpython.path=%DOMAIN_HOME%\python-lib
${DOMAIN_HOME}/setUserOverrides.sh:
#!/bin/sh
export EXTRA_JAVA_PROPERTIES=-Dpython.path=${DOMAIN_HOME}/python-lib/jython-standalone-2.7-b1-infinity02.jar/Lib
# Uncomment the following line if the python files was extracted from jython-standalone-2.7-b1-infinity02.jar\Lib to ${DOMAIN_HOME}/python-lib
# export EXTRA_JAVA_PROPERTIES=-Dpython.path=${DOMAIN_HOME}/python-libWe recommend to cluster your Web application with the data distribution platform Hazelcast as described in section Tuning by using Hazelcast.
This section contains the following information regarding setting up the transactional resources required by Stardust in the WebLogic server.
This section describes the configuration of resources required to use Stardust with WebLogic. Refer to the Release Notes for details on the currently supported WebLogic versions.
Create a WebLogic domain for Stardust. Please refer to the WebLogic manual for instructions.


AuditTrail AuditTrail.DataSource <select database_type from drop
down> AuditTrail 







In case you need a persistent store for JMS messaging, create a non-xa datasource first and add a JDBC persistent store with the created datasource. Select this persistent store while creating JMS Server.





This links the JMS Module to the JMS Server.



Create the JMS Queue Connection Factory that is used for the Stardust JMS queues that are created later.




The following, provides instructions for creating the JMS queues required by Stardust within a EJB deployment.





For client configuration with WebLogic, build a client lib file called
wlfullclient.jar.
Make sure your Java home and JVM home apply to the supported versions.
Refer to the
Stardust Release Notes for details on the supported platform version for the
current release.
To create the wlfullclient.jar file for a client Web application do the following:
WL_HOME/server/lib folder.wlfullclient.jar in the server/lib
directory: java -jar wljarbuilder.jar -profile wlfullclient
wlfullclient.jar with client
applications.wlfullclient.jar to the client application's classpath.To avoid session timeouts when using principal login, deactivate the KeepAlive option. In the WebLogic Administration Console perform the following steps:

The following sections provide deployment instructions on using the predefined deployment configurations to deploy the Stardust EAR file and deploying Stardust in a WebLogic application server.
The following sections discuss the deployment of the Stardust EAR file provided via the preconfigured deployment configuration into the WebLogic application server.



To prepare a Jackrabbit deployment on
WebLogic, download the jackrabbit-jca-2.6.1-infinity02.rar
file from the following location:
Note
In case you like to use DOCX files, e.g. for templating, and you have a local jackrabbit-jca-2.6.1.rar
which was downloaded via the earlier jackrabbit-jca-2.6.1-infinity01.rar
ooxml-schemas and xmlbeans from the WAR deployment and use the one
from the Jackrabbit RAR. Drop the poi-ooxml-schemas JAR and put ooxml-schemas into it.
jackrabbit-jca-2.6.1-infinity02.rar mentioned above.Please refer to the following sections for instructions on how to setup WebLogic for a standalone Jackrabbit deployment.
jackrabbit-api-2.6.1.jar
from the RAR and place it into %DOMAIN_HOME%/lib.META-INF/weblogic-ra.xml
inside the RAR archive with the following content.
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-connector xmlns="http://www.bea.com/ns/weblogic/90">
<jndi-name>jcr/infinityRA</jndi-name>
<enable-access-outside-app>true</enable-access-outside-app>
<enable-global-access-to-classes>true
</enable-global-access-to-classes>
<outbound-resource-adapter>
<connection-definition-group>
<connection-factory-interface>javax.jcr.Repository
</connection-factory-interface>
<connection-instance>
<jndi-name>jcr/jackrabbit</jndi-name>
<connection-properties>
<pool-params>
<initial-capacity>10</initial-capacity>
<max-capacity>50</max-capacity>
<capacity-increment>1</capacity-increment>
<shrinking-enabled>true</shrinking-enabled>
<shrink-frequency-seconds>6</shrink-frequency-seconds>
</pool-params>
<properties>
<property>
<name>ConfigFile</name>
<value>classpath:repository.xml</value>
</property>
<property>
<name>HomeDir</name>
<value>D:/servers/applicationServers/weblogic-10.3.3/user_projects/domains/carnot_ejb/jackrabbit</value>
</property>
</properties>
</connection-properties>
</connection-instance>
</connection-definition-group>
</outbound-resource-adapter>
</weblogic-connector>
META-INF/weblogic-ra.xml file inside the RAR archive,
adapt the properties HomeDir and
ConfigFile as per your repository locations.%CARNOT_HOME%/lib to %DOMAIN_HOME%/lib.
jcr-2.0.jarlog4j-1.2.15.jarrepository.xml in your classpath, e.g.:
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.2//EN"
"http://jackrabbit.apache.org/dtd/repository-1.2.dtd">
<!-- Example Repository Configuration File -->
<Repository>
<!--
virtual file system where the repository stores global state
(e.g. registered namespaces, custom node types, etc.)
-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository"/>
</FileSystem>
<!--
security configuration
-->
<Security appName="Jackrabbit">
<!--
access manager:
class: FQN of class implementing the AccessManager interface
-->
<AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager">
<!-- <param name="config" value="${rep.home}/access.xml"/> -->
</AccessManager>
<LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<!-- anonymous user name ('anonymous' is the default value) -->
<param name="anonymousId" value="anonymous"/>
<!--
default user name to be used instead of the anonymous user
when no login credentials are provided (unset by default)
-->
<!-- <param name="defaultUserId" value="superuser"/> -->
</LoginModule>
</Security>
<!--
location of workspaces root directory and name of default workspace
-->
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
<!--
workspace configuration template:
used to create the initial workspace if there's no workspace yet
-->
<Workspace name="${wsp.name}">
<!--
virtual file system of the workspace:
class: FQN of class implementing the FileSystem interface
-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}"/>
</FileSystem>
<!--
persistence manager of the workspace:
class: FQN of class implementing the PersistenceManager interface
-->
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
<param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
</PersistenceManager>
<!--
Search index and the file system it uses.
class: FQN of class implementing the QueryHandler interface
-->
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
</SearchIndex>
</Workspace>
<!--
Configures the versioning
-->
<Versioning rootPath="${rep.home}/version">
<!--
Configures the filesystem to use for versioning for the respective
persistence manager
-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem>
<!--
Configures the persistence manager to be used for persisting version state.
Please note that the current versioning implementation is based on
a 'normal' persistence manager, but this could change in future
implementations.
-->
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
<param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
<param name="schemaObjectPrefix" value="version_"/>
</PersistenceManager>
</Versioning>
<!--
Search index for content that is shared repository wide
(/jcr:system tree, contains mainly versions)
-->
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index"/>
</SearchIndex>
</Repository>
users.propertiesroles.propertiesusers.properties file, add default entries, which can be one or
more users as keys and their passwords as values:
<ipp-jcr-user>=<ipp-jcr-password>
You can leave the roles.properties file, which is a container for users,
as keys and a comma-separated list of their roles as values, empty.
The default values set in the users.properties file can be
overwritten in the carnot.properties file by setting the following properties:
<ipp-jcr-user> and <ipp-jcr-password> respectively per default.jackrabbit-jca-2.6.1-infinity01.rar
in the same way as a Web archive.90, so that it is always started
before any other Stardust related deployments.You need to verify the JCR connection factory settings.

To configure the Stardust Workflow Execution Perspective in spring mode:
WEB-INF/config/ipp/spring folder:
web.xml with the following entry:
<resource-env-ref>
<description>Content Repository</description>
<resource-env-ref-name>jcr/jackrabbit</resource-env-ref-name>
<resource-env-ref-type>javax.jcr.Repository</resource-env-ref-type>
</resource-env-ref>
weblogic.xml file:
<resource-env-description>
<res-env-ref-name>jcr/jackrabbit</res-env-ref-name>
<jndi-name>jackrabbit</jndi-name>
</resource-env-description>
Please refer to the example
weblogic.xml file.To set up additional Jackrabbit VFS repositories in WebLogic, you need to configure a new connection factory on the server using a different repository home and JNDI name.
This resource can then be bound using the DocumentManagementService#bindRepository
API. Please refer to chapter
Managing Document Repositories
of the
Programming Guide for details.
If you perform a standard Stardust portal WAR deployment on WebLogic, the produced log might miss some details like bootstrapping information from the Spring Framework or route tracing from the Camel Context.
To provide a proper logging, copy the slf4j-api-1.5.11.jar and
slf4j-log4j12-1.5.11.jar libraries to the lib folder of your
WebLogic domain.
If you like to connect to the engine in an EJB tunneling environment with
WebLogic, use the
TunnelingSessionFactory provided by Stardust
to avoid connection issues.
To use this session factory, set the following property in your
client-side carnot.properties file:
Secure.Session.Factory = org.eclipse.stardust.engine.api.ejb2.TunnelingSessionFactory
You can use Hazelcast for tuning via retrieving entities from in-memory cache. Hazelcast is a clustering and scalable data distribution platform. For detailed information on Hazelcast refer to http://www.hazelcast.com/product.jsp.
For details on tuning via an in-memory cache in Stardust refer to chapter Retrieving Entities from In-Memory Cache in the Developer Handbook.
The following examples demonstrates the usage of Hazelcast on WebLogic 10.3. Stardust provides a prepared RAR file to be deployed with WebLogic.
To set up Hazelcast on WebLogic for a separate RAR deployment perform the following steps:
hazelcast-2.4-stardust03.rar to the %DOMAIN_HOME%/lib folder
(
https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.jar )
of your WebLogic application server.setUserOverrides.cmd resp. setUserOverrides.sh
residing in the %DOMAIN_HOME%/bin folder.hazelcast-ra-2.4-stardust03.rar file from the repository:
https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.rar
weblogic-ra.xml
in com.hazelcast:hazelcast-ra:2.4-stardust03:rar!META-INF/ the
Hazelcast connection factory will be bound to java:/HazelcastCF).


hazelcast-ra-1
and click Next.

Yes, take me to the deployment's configuration screen and
click Finish.

90 so that it is always started
before any other Stardust related deployments and
click Save.
javax.resource.cci.ConnectionFactory entry
and open the element.
HazelcastCF. Note that this is used later in your
carnot.properties file!
10 and maximal capacity of 50. Click
Save.
hazelcast.xml on the classpath of
your EAR (or a default configuration will be taken from com.hazelcast:hazelcast:2.4).carnot.properties file
to enable Hazelcast caching:
Infinity.Engine.Caching = true
Infinity.Engine.Caching.CacheFactory = org.eclipse.stardust.engine.core.cache.hazelcast.HazelcastCacheFactory
Infinity.Engine.Caching.Hazelcast.TxMode = rw
Infinity.Engine.Caching.Hazelcast.ConnectionFactoryJndiName = HazelcastCF
Infinity.Engine.Caching.Hazelcast.GlobalCacheName = ipp-2nd-level-cache
hazelcast-monitor-2.4.war from the Hazelcast distribution
(
http://www.hazelcast.com/files/hazelcast-2.4.zip).The engine now uses Hazelcast as second level cache provider. This can be monitored as cache size and Hit Rate will change after logging into the Stardust portal, for example.
The cache is configured to remove cached entries after at most 60 seconds for the time
being. This is why Stardust will eventually hit the database again to
repopulate the cache. The time to
live can be adjusted in the hazelcast.xml configuration file
(<time-to-live-seconds>hazelcast.xml
can be found in <Stardust Installation>/examples/hazelcast or downloaded
here: hazelcast.xml.
Please note that with this setup there will be only one node. Hazelcast either
detects or is explicitly told about additional node members. For details
on this issue please refer
to the Hazelcast documentation or the hazelcast.xml file.
To deploy the Hazelcast resource adapter inside your EAR, perform the following steps:
hazelcast-2.4-stardust03.jar into the root folder of your EAR
(
https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.jar ).hazelcast-ra-2.4-stardust03.jar file from the repository:
https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.rar
application.xml
of the EAR:
[...]
<application [...]>
[...]
<module>
<connector>hazelcast-ra-2.4-stardust03.jar</connector>
</module>
[...]
</application>
hazelcast-2.4.jar to the
META-INF/MANIFEST.MF of the carnot-engine.jar as well as
hazelcast-ra-2.4-stardust03.jar file.weblogic-ra.xml in
com.hazelcast:hazelcast-ra:2.4-stardust03:rar!META-INF/ the Hazelcast
connection factory will be bound to java:/HazelcastCF).hazelcast.xml on the classpath of
your EAR (or a default configuration will be taken from com.hazelcast:hazelcast:2.4).