top-image

LATEST ARTICLES

Hello,

Just a post concerning the freeze, unfreeze mechanism of documentum which allows to mark an object and, optionally, its components (if the object is a virtual document), as unchangeable.

There is also the lock/unlock mechanism which places a database lock on an object.



FREEZE DOCUMENT
The content server modifies these following attributes of the object when freezing an object :
• r_immutable_flag to true : This attribute indicates that the object is unchangeable.
• r_frozen_flag to true : This attribute indicates that the object is unchangeable because it was specifically frozen.
• i_vstamp incemented.
• r_modify_date, r_modifier.

+ API : freeze,session,object_id[,freeze_components]
+ DFC : IDfSysObject.freeze()

Document before freeze:
  r_object_id                : 09xxxxxxxxxxxxxx5
  r_modify_date              : 07/05/2017 09:05:26
  r_modifier                 : myuser123
  r_immutable_flag           : F
  r_frozen_flag              : F
  i_vstamp                   : 0

Document after freeze:
  r_object_id                : 09xxxxxxxxxxxxxx5
  r_modify_date              : 04/06/2017 09:39:03
  r_modifier                 : myuser123
  r_immutable_flag           : F
  r_frozen_flag              : F
  i_vstamp                   : 1

It is not possible to freeze a frozen document:
freeze,c,09xxxxxxxxxxxxxx5
save,c,09xxxxxxxxxxxxxx5

  r_object_id                : 09xxxxxxxxxxxxxx5
  r_modify_date              : 04/06/2017 09:45:15
  r_modifier                 : myuser123
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_vstamp                   : 1

API> freeze,c,09xxxxxxxxxxxxxx5
...
[DM_SYSOBJECT_E_FROZEN]error:  "The my_document_name_0957 sysobject is frozen."


UNFREEZE DOCUMENT
The content server modifies these following attributes of the object when freezing an object :
• r_immutable_flag to false: This attribute indicates that the object is unchangeable. Note that if the object has been versioned, unfreezing the object does not unset this attribute; it remains set to T.
• r_frozen_flag to false: This attribute indicates that the object is unchangeable because it was specifically frozen.
• i_vstamp incemented.
• r_modify_date, r_modifier.

+ API : unfreeze,session,object_id[,thaw_components]
+ DFC : IDfSysObject.unfreeze()

Document before unfreeze:
  r_object_id                : 09xxxxxxxxxxxxxx5
  r_modify_date              : 04/06/2017 09:45:15
  r_modifier                 : myuser123
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_vstamp                   : 1

Document after freeze:
  r_object_id                : 09xxxxxxxxxxxxxx5
  r_modify_date              : 04/06/2017 11:45:15
  r_modifier                 : myuser123
  r_immutable_flag           : F
  r_frozen_flag              : F
  i_vstamp                   : 2

It is not possible to unfreeze a not frozen document:
unfreeze,c,09xxxxxxxxxxxxxx5
save,c,09xxxxxxxxxxxxxx5

  r_object_id                : 09xxxxxxxxxxxxxx5
  r_modify_date              : 04/06/2017 09:45:15
  r_modifier                 : myuser123
  r_immutable_flag           : F
  r_frozen_flag              : F
  i_vstamp                   : 1

API> unfreeze,c,09xxxxxxxxxxxxxx5
...
[DM_SYSOBJECT_E_NOT_FROZEN]error:  "The my_document_name_0957 sysobject is not frozen."

ACTIONS on FROZEN DOCUMENT
TEST : DELETE/DESTROY a frozen document
DQL/API myadminuser : Delete/destroy of frozen document is impossible.
API> retrieve,c,dm_document where r_object_id = '090xxxxxxxxxx4f'
...
090xxxxxxxxxx4f
API> destroy,c,l
...
[DM_SYSOBJECT_E_FROZEN]error:  "The my_document_name_1338 sysobject is frozen."


TEST : UPDATE a frozen document
DQL/API myadminuser : Update of frozen document is impossible.
API> retrieve,c,my_type_document where r_object_id = '09xxxxxxxxxxxxxx5'
...
09xxxxxxxxxxxxxx5
API> set,c,l,object_name
my_document_name_1049
...
OK
API> save,c,l
...
[DM_SYSOBJECT_E_CANT_SAVE_IMMUTABLE]error:  "Cannot save my_document_name_1049 since it is immutable."


TEST : CHECKOUT a frozen document
DQL/API myadminuser : CHECKOUT of frozen document is possible. The CHECKOUT action sets the attributes r_lock_owner, r_lock_date, r_lock_machine, i_vstamp. The attributes r_modify_date and r_modifier are not modified.
API> checkout,c,090xxxxxxxxxxxxf5
...
090xxxxxxxxxxxxf5

  r_object_id                : 090xxxxxxxxxxxxf5
  r_modify_date              : 04/06/2017 16:39:02
  r_lock_owner               : myadminuser

  r_lock_date                : 04/06/2017 16:48:33

  r_lock_machine             : myhost123
  r_version_label         [0]: 3.1
                          [1]: CURRENT
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_vstamp                   : 2

API> checkout,c,090xxxxxxxxxxxxf5
...
090xxxxxxxxxxxxf5

  r_object_id                : 090xxxxxxxxxxxxf5
  r_modify_date              : 04/06/2017 16:40:48
  r_lock_owner               : myadminuser

  r_lock_date                : 06/06/2017 09:09:11

  r_lock_machine             : myhost123
  r_version_label         [0]: 3.1
                          [1]: CURRENT
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_vstamp                   : 3


TEST : CHECKOUT/CHECKIN a frozen document
DQL/API myadminuser : CHECKOUT/CHECKIN of frozen document is possible.
API> checkout,c,090xxxxxxxxxxxxf5
...
090xxxxxxxxxxxxf5

API> set,c,090xxxxxxxxxxxxf5,object_name
my_document_name_1045
...
OK

API> checkin,c,090xxxxxxxxxxxxf5
...
090xxxxxxxxxxxxxx69

Before CHECKOUT / CHECKIN
  r_object_id                : 090xxxxxxxxxxxxf5
  object_name                : my_document_name_0957
  r_modify_date              : 04/06/2017 16:40:48
  r_lock_owner               : 

  r_lock_date                : nulldate
  r_lock_machine             : 
  r_version_label         [0]: 3.1
                          [1]: CURRENT
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_has_folder               : T
  i_latest_flag              : T
  i_direct_dsc               : F
  i_vstamp                   : 3
After CHECKOUT
  r_object_id                : 090xxxxxxxxxxxxf5
  object_name                : my_document_name_0957
  r_modify_date              : 04/06/2017 16:40:48
  r_lock_owner               : myadminuser
  r_lock_date                : 05/06/2017 11:00:21
  r_lock_machine             : myhost123
  r_version_label         [0]: 3.1
                          [1]: CURRENT
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_has_folder               : T
  i_latest_flag              : T
  i_direct_dsc               : F
  i_vstamp                   : 4
After CHECKIN : the document is still FROZEN
  r_object_id                : 090xxxxxxxxxxxxf5
  object_name                : my_document_name_0957
  r_modify_date              : 04/06/2017 16:40:48
  r_lock_owner               : 

  r_lock_date                : nulldate
  r_lock_machine             : 
  r_version_label         [0]: 3.1
  r_immutable_flag           : T
  r_frozen_flag              : T
  i_has_folder               : F
  i_latest_flag              : F
  i_direct_dsc               : F
  i_vstamp                   : 5
After CHECKIN : NEW VERSION UNFROZEN of document after CHECKOUT / CHECKIN : 090xxxxxxxxxxxxxx69
  r_object_id                : 090xxxxxxxxxxxxxx69
  object_name                : my_document_name_1045
  r_modify_date              : 06/06/2017 10:46:38
  r_lock_owner               : 

  r_lock_date                : nulldate

  r_lock_machine             : 

  r_version_label         [0]: 3.2

                          [1]: CURRENT

  r_immutable_flag           : F

  r_frozen_flag              : F
  i_has_folder               : T
  i_latest_flag              : T
  i_direct_dsc               : F
  i_vstamp                   : 0


LOCK/UNLOCK DOCUMENT
It is possible to place a database lock on an object (lock) and remove this intention lock without saving any changes that may have been made to the locked object (unlock).
API> lock,c,090xxxxxxxxxx4f
...
[DM_API_E_CANT_WITHOUT_OPEN_TRAN]error:  "You cannot perform 'lock' operation without an open transaction in this session."

API> begintran,c
...
OK
API> lock,c,090xxxxxxxxxx4f
...
OK
API> commit,c
...
OK

API> unlock,c,090xxxxxxxxxx4f
...
OK

The lock and unlock mechanism don’t modify any attribute of document:
  r_object_id                : 090xxxxxxxxxx4f
  object_name                : my_document_name_1045
  r_modify_date              : 06/06/2017 11:35:10
  r_lock_owner               : 
  r_lock_date                : nulldate
  r_lock_machine             : 
  r_version_label         [0]: 3.3
                          [1]: CURRENT
  r_immutable_flag           : F
  r_frozen_flag              : F
  i_vstamp                   : 0

The UPDATE of a database LOCKED document is possible:
API> retrieve,c,my_type_document where r_object_id = '090xxxxxxxxxx4f'
...
090xxxxxxxxxx4f
API> set,c,l,object_name
my_document_name_1338
...
OK
API> save,c,l
...
OK


Unlock (i.e., Cancel Checkout) of an Object
It is possible to cancel checkout (Unlock) on the document which is locked by another user. The above api command to unlock the document which is checked out by another user, to execute the command the user must have minimum of Administrator access.
When a user makes a checkout on a sysobject (opens to edit), Documentum automatically applies a lock on the object, preventing other users from modifying it. Only the lock owner or a superuser can unlock the object by making a checkin or cancel the checkout. As sometimes users forget to unlock documents, you might need to do this as a superuser.
You can unlock an object in 2 ways:
DQL: update dm_document object set r_lock_owner='', set r_lock_machine='', set r_lock_date=date('nulldate') where r_object_id='090xxxxxxxxxxxxf5'

API: unlock,c,090xxxxxxxxxxxxf5,F
The last argument is a boolean flag specifying if a mail notification will be sent to the lock owner.

Best regards,


Huseyin OZVEREN

Hello,

After my first post concerning the SSL and the tool PorteCle (http://www.javablog.fr/java-ssl-generate-keystore-self-signed-certificate-tool-portecle.html) allowing the generation of KeyStore, self-signed certificate instead of Keytool supported in the JDK / JRE, I would like to present a new tool KeyStore Explorer.

KeyStore Explorer is an open source GUI replacement for the Java command-line utilities keytool and jarsigner. KeyStore Explorer presents their functionality, and more, via an intuitive graphical user interface.

https://keystore-explorer.org/

https://keystore-explorer.org/downloads.html


JAVA CACERTS truststore

First, a truststore is used to authenticate peers. A keystore contains private keys of the clients and is used to authenticate yourself.

So, there is also a truststore ‘cacerts‘ used to authenticate the java process executed in JVM using the JDK. Java stores in this truststore the public certificates of root CAs. Java uses cacerts to authenticate java processes with remote servers (example during a proxies generation via WSDL). You could add the certificat of remote servers in the ‘cacerts‘ truststore.

The Java ‘cacerts‘ truststore is a file accessible in the folder $JAVA_HOME\jre\lib\security (ex: C:\SDK\jdk1.X.Y_ZZ\jre\lib\security).


It is protected by a default password (ex: “changeit” or “changeme”) which could be modified by the following commands:

Add -storepass to keytool arguments.
$JAVA_HOME/bin/keytool -storepasswd -storepass '' -keystore mykeystore.jks

But also notice that -list command does not always require a password. I could execute follow command in both cases: without password or with valid password

$JAVA_HOME/bin/keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts


Disable Certificate Validation in Java SSL Connections

An other solution could be disable Certificate Validation in Java SSL Connections:

Caused by: javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://myserver.mydomain.lu/services/myservice/MyService1?WSDL. It failed with:
java.security.cert.CertificateException: No subject alternative DNS name matching myserver.mydomain.lu found..
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:162)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:144)
at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:265)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:228)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:176)
at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:104)
at javax.xml.ws.Service.<init>(Service.java:56)
… 16 more
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching myserver.mydomain.lu found.
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1699)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:241)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1149)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
at java.net.URL.openStream(URL.java:1010)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:804)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:262)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:129)
… 22 more
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching myserver.mydomain.lu found.
at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:193)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:77)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:264)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:250)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1185)
… 37 more

The above error/problem could be fixed by disabling HTTPS checks using the approach presented in the web site https://nakov.com/blog/2009/07/16/disable-certificate-validation-in-java-ssl-connections/

import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

// ….
static {
disableSslVerification();
}

// ….
private static void disableSslVerification() {
try
{
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws CertificateException {
}
}
};
<pre><code>        // Install the all-trusting trust manager
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        // Create all-trusting host name verifier
        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };

        // Install the all-trusting host verifier
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (KeyManagementException e) {
        e.printStackTrace();
    }
}



Best regards,

Huseyin OZVEREN

Hello,

After my previous post http://www.javablog.fr/documentum-bof-sbo-service-based-business-object-tbo-type-based-business-object-aspects.html, just a mini post related an error java.lang.NoSuchMethodException which occurs when the use of a SBO’s method whereas it exists. Basically in JAVA, the problem seems concern the type of POJO’s argument used between the SBO and the SBO’s client (like DCTM JOB…), the package or attributes could be different.

// ERROR CASE
try {
IDfService dfService = DfClient.getLocalClientEx().newService("com.huo.lu.business.sbo.ecm.mail.IMailSBO", session.getSessionManager());

Method method = dfService.getClass().getMethod("sendMail", com.huo.lu.business.sbo.ecm.mail.Mail.class);

method.invoke(dfService, mailMessage);

} catch (Exception e) {
throw new DfException(MessageFormat.format("MailSBO.sendMail({0}, {1})", session, mailMessage), e);
}

....Caused by: java.lang.NoSuchMethodException: com.huo.lu.business.sbo.ecm.mail.impl.MailSBO.sendMail(com.huo.lu.business.sbo.ecm.mail.Mail)
at java.lang.Class.getMethod(Class.java:1624)
... 23 more

This error doesn’t concern the presence or not of “serialVersionUID” attribute in a POJO.The Serial Version ID is used when serializing and deserializing an object. Java recognizes if the bytes you want to deserialize match the local class version. If not it will throw an exception. This is important when doing RMI or persisting object structures.

private static final long serialVersionUID = 6512673270706929264L;

However, this error occurs even with a local POJO class totally identical with the POJO class version in SBO (same package, same source), so, a simple solution is the adding of JAR containing the POJO used in SBO in the CLIENT side. Another solution is the use of class loader of remote SBO when the method is loaded/retrieved with the use of JAVA reflection for instantiation for given REMOTE POJO classes.

// #### OLD : ERROR CASE
Method method = dfService.getClass().getMethod("sendMail", com.huo.lu.business.sbo.ecm.mail.Mail.class);

// #### NEW : with use of SBO class loader
Method method = dfService.getClass().getMethod("sendMail", dfService.getClass().getClassLoader().loadClass("com.huo.lu.business.sbo.ecm.mail.Mail"));

Here, a full example using the SBO class loader and JAVA reflection.
So, the local POJO classes (InternetAddress / Mail) are NOT necessary:

package com.huo.lu.business.sbo.ecm.mail;

// ... import

public class InternetAddress {
private String label;
private String address;
public InternetAddress() {
this(null, null);
}

// .... GETTERS / SETTERS
}
package com.huo.lu.business.sbo.ecm.mail;

// ... import

public class Mail {

private InternetAddress from;
private List<InternetAddress> to;
private List<InternetAddress> cc;
private List<InternetAddress> bcc;
private String subject;
private String body;

public Mail() {
}

// .... GETTERS / SETTERS
}
IDfService dfService = DfClient.getLocalClientEx().newService("com.huo.lu.business.sbo.ecm.mail.IMailSBO", session.getSessionManager());

ClassLoader classLoaderOfRemoteService = dfService.getClass().getClassLoader();

Class<?> clazzMail = classLoaderOfRemoteService.loadClass("com.huo.lu.business.sbo.ecm.mail.Mail");

Class<?> clazzInternetAddress = classLoaderOfRemoteService.loadClass("com.huo.lu.business.sbo.ecm.mail.InternetAddress");

Mail objectMail = new Mail();
objectMail = clazzMail.newInstance();

// # setFrom(InternetAddress from)
// objectMail.setFrom(new InternetAddress(SENDER_EMAIL, SENDER_FRIENDLYNAME));
{
// InternetAddress
Constructor<?> constructorInternetAddress = clazzInternetAddress.getConstructor(new Class[] { String.class, String.class});
Object objectInternetAddress = constructorInternetAddress.newInstance(new Object[] { SENDER_EMAIL, SENDER_FRIENDLYNAME });
Method methodSetFrom = objectMail.getClass().getMethod("setFrom", clazzInternetAddress);
methodSetFrom.invoke(objectMail, objectInternetAddress);
}

// # setTo(List<InternetAddress> to)
// objectMail.setTo(emailAssignees);
{
List<Object> listOfAssigneesInternetAddress = new ArrayList<Object>();
for (Iterator<String> emailAssigneesIter = emailAssignees.iterator(); emailAssigneesIter.hasNext();) {
String emailAssigneeStr = emailAssigneesIter.next();
// InternetAddress
Constructor<?> constructorInternetAddress = clazzInternetAddress.getConstructor(new Class[] { String.class});
Object objectInternetAddress = constructorInternetAddress.newInstance(new Object[] { emailAssigneeStr });
listOfAssigneesInternetAddress.add(objectInternetAddress);
}//end-for

Method methodSetTo = objectMail.getClass().getMethod("setTo", List.class);
methodSetTo.invoke(objectMail, listOfAssigneesInternetAddress);
}

// # setSubject(String subject)
// objectMail.setSubject("SUBJECT 123");
{
Method methodSetSubject = objectMail.getClass().getMethod("setSubject", String.class);
methodSetSubject.invoke(objectMail, "SUBJECT 123");
}

// # setBody(String body)
// objectMail.setBody(createMailBody());
{
Method methodSetBody = objectMail.getClass().getMethod("setBody", String.class);
methodSetBody.invoke(objectMail, createMailBody());
}

Method method = dfService.getClass().getMethod("sendMail", clazzMail);
method.invoke(dfService, objectMail);

Best regards

Huseyin OZVEREN

Hello,

Just a post to add a script to install DAR/docapp to Documentum found on linkedin https://www.linkedin.com/feed/update/urn:li:activity:6498895995227766784 added by Alex Vais:

# Variables:
ENV=<Per_ENV>
SPECIFICDATE=`date +"%Y%m%d_%H%M%S"`
WORKINGDIRECTORY=$HOME/tmp/eitan/sandbox/dar_install
DOCAPPLOGFILE=$WORKINGDIRECTORY/log_file_$VAR.log
DARFILE=$WORKINGDIRECTORY/dar_filelist.log
SCRIPTFOLDER=$HOME/scripts
location1=$HOME/tmp/dar_install
location2=$HOME/dba/config/xxxxxxxxx/server.ini
LOG=$HOME/tmp/eitan/sandbox/dar_install/logs/dar_run_`date +"%Y%m%d"`.log
MSG=$HOME/tmp/eitan/sandbox/dar_install/logs/dar_run_`date +"%Y%m%d"`.msg
MAILTO="xxxxxxxxx@xxxxxxxx.xx.xx.xx.xxx"
WHATTOCHECK1="was successfully installed"

# Get Username:
export username=`whoami`; echo $username

# Get Docbase name:
export docbase1=`grep "docbase_name = " $location2 | awk '{print $NF}'`; echo $docbase1

# Get Docbase password:
export PASSWORD=` cat $SCRIPTFOLDER/.pwd_$docbase1`; echo $PASSWORD
echo " " > $LOG
echo " " > $MSG

cd $WORKINGDIRECTORY

ls -1 *.dar > $DARFILE

for VAR in `cat $DARFILE`
do
java -Dant_extended_lib_dir=$HOME/product/7.2/install/composer -Ddars=$VAR -Dlogpath=$LOG -Ddi_log=$DOCAPPLOGFILE -Ddocbase=$docbase1 -Duser=$username -Dpassword=$PASSWORD -Ddomain= -cp $HOME/product/7.2/install/composer/ComposerHeadless/startup.jar org.eclipse.core.launcher.Main -data $HOME/product/7.2/install/composer/workspace/ -application org.eclipse.ant.core.antRunner -buildfile $HOME/product/7.2/install/composer/deploy.xml deployAll
done

echo " $SPECIFICDATE Verification stage "

if grep -Fxq "$WHATTOCHECK1" $LOG
then
echo "$SPECIFICDATE DocApp was installed " >> $LOG 
else
echo "Check log file and run the process again" 
exit 0

fi

cat $LOG >> $MSG

mailx -s "$SPECIFICDATE Deployment of DAR file(s) to $ENV finished, here are the results;" $MAILTO < $MSG

echo " " > $LOG
echo " " > $MSG
echo " " > $DARFILE



Best regards,

Huseyin OZVEREN

Page 1 of 53:1 2 3 4 »Last »
bottom-img
Copyright ® 2012 Hüseyin Özveren. No reproduction, even partial, can be used from this site and all its contents including text, documents, images, etc.. without the express permission of the author.