Wednesday, December 28, 2016

internal maven properties

This page extracts a few classical values:
  • ${project.basedir} 
    • This references to the root folder of the module/project (the location where the current pom.xml file is located)
POM properties referencing useful build locations, with default values defined in the Super POM:
  • ${project.build.directory}
    • This represents by default the target folder.
  • ${project.build.outputDirectory}
    • This represents by default the target/classes folder.
  • ${project.build.testOutputDirectory}
    • This represents by default the target/test-classes folder.
  • ${project.build.sourceDirectory}
    • This represents by default the src/main/java folder.
  • ${project.build.testSourceDirectory}
    • This represents by default the src/test/java folder.
You can use further properties like the following:
  • ${project.build.finalName}
    • This is by default defined as ${project.artifactId}-${project.version}.
  • ${project.version}
    • This can be used at locations where you have to write a literal version otherwise, in particular if you are in a multi-modules build for inter modules dependencies.
User Settings
The settings.xml elements could be referenced by using things like this (see also at the Super POM):
  • ${settings.localRepository}
    • which references the location of the local repository. This is by default ${home}/.m2/repository.
Values are evaluated in sequence from different syntaxes:
valueevaluation resultcommon examples
project.*
pom.* (deprecated)
* (deprecated)
POM content (see POM reference)${project.version}
${project.build.finalName}
${project.artifactId}
${project.build.directory}
project.basedir
pom.basedir (deprecated)
basedir (deprecated)
the directory containing the pom.xml file${project.basedir}
project.baseUri
pom.baseUri (deprecated)
the directory containing the pom.xml file as URI${project.baseUri}
build.timestamp
maven.build.timestamp
the UTC timestamp of build start, in yyyy-MM-dd'T'HH:mm:ss'Z' default format, which can be overridden with maven.build.timestamp.format POM property${maven.build.timestamp}
*user properties, set from CLI with -Dproperty=value${skipTests}
*model properties, such as project properties set in the pom${any.key}
maven.homeThe path to the current Maven home.${maven.home}
maven.versionThe version number of the current Maven execution (since 3.0.4). For example, "3.0.5".${maven.version}
maven.build.versionThe full build version of the current Maven execution (since 3.0.4). For example, "Apache Maven 3.2.2 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19T14:51:28+01:00)".${maven.build.version}
*Java system properties (see JDK reference)${user.home}
${java.home}
env.*
*
environment variables${env.PATH}
settings.*Local user settings (see settings reference)${settings.localRepository}

Monday, September 19, 2016

Hibernate : log4j.xml logging category and binding parameters




down voteaccepted
Here's the list of logger categories:
Category                    Function

org.hibernate.SQL           Log all SQL DML statements as they are executed
org.hibernate.type          Log all JDBC parameters
org.hibernate.tool.hbm2ddl  Log all SQL DDL statements as they are executed
org.hibernate.pretty        Log the state of all entities (max 20 entities) associated with the session at flush time
org.hibernate.cache         Log all second-level cache activity
org.hibernate.transaction   Log transaction related activity
org.hibernate.jdbc          Log all JDBC resource acquisition
org.hibernate.hql.ast.AST   Log HQL and SQL ASTs during query parsing
org.hibernate.secure        Log all JAAS authorization requests
org.hibernate               Log everything (a lot of information, but very useful for troubleshooting) 
Formatted for pasting into a log4j XML configuration file:
<!-- Log all SQL DML statements as they are executed -->
<Logger name="org.hibernate.SQL" level="debug" />
<!-- Log all JDBC parameters -->
<Logger name="org.hibernate.type" level="debug" />
<!-- Log all SQL DDL statements as they are executed -->
<Logger name="org.hibernate.tool.hbm2ddl" level="debug" />
<!-- Log the state of all entities (max 20 entities) associated with the session at flush time -->
<Logger name="org.hibernate.pretty" level="debug" />
<!-- Log all second-level cache activity -->
<Logger name="org.hibernate.cache" level="debug" />
<!-- Log transaction related activity -->
<Logger name="org.hibernate.transaction" level="debug" />
<!-- Log all JDBC resource acquisition -->
<Logger name="org.hibernate.jdbc" level="debug" />
<!-- Log HQL and SQL ASTs during query parsing -->
<Logger name="org.hibernate.hql.ast.AST" level="debug" />
<!-- Log all JAAS authorization requests -->
<Logger name="org.hibernate.secure" level="debug" />
<!-- Log everything (a lot of information, but very useful for troubleshooting) -->
<Logger name="org.hibernate" level="debug" />
NB: Most of the loggers use the DEBUG level, however org.hibernate.type uses TRACE. In previous versions of Hibernate org.hibernate.type also used DEBUG, but as of Hibernate 3 you must set the level to TRACE (or ALL) in order to see the JDBC parameter binding logging.
And a category is specified as such:
<logger name="org.hibernate">
    <level value="ALL" />
    <appender-ref ref="FILE"/>
</logger>
It must be placed before the root element.

Monday, September 5, 2016

Hibernate 4 - publish changes / updates to the schema with entities in Spring JavaConfig

package com.mycompany.domain.test;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.hibernate.MappingException;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
import org.hibernate.cfg.Configuration;
import org.hibernate.metamodel.MetadataSources;
import org.hibernate.metamodel.source.MetadataImplementor;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;

public class JpaSchemaExport {
   
   private static final Logger LOGGER = Logger.getLogger(JpaSchemaExport.class);
     
   public static void main(String[] args) throws MappingException, IOException, ClassNotFoundException {
      BasicConfigurator.configure();
      Configuration c = new Configuration();
      Class[] clzzs = getClasses("com.mycompany.domain.entity");
      for (int i = 0; i < clzzs.length; i++) {
         c.addAnnotatedClass(clzzs[i]);
      }
      Properties hibernateProperties = new Properties();
      hibernateProperties.put("hibernate.connection.driver_class","oracle.jdbc.OracleDriver");
      hibernateProperties.put("hibernate.connection.url","jdbc:oracle:thin:@");
      hibernateProperties.put("hibernate.connection.username","scott");
      hibernateProperties.put("hibernate.connection.password","secret99");
      hibernateProperties.put("hibernate.show_sql", true);
      hibernateProperties.put("hibernate.dialect","org.hibernate.dialect.Oracle10gDialect");
      hibernateProperties.put("hibernate.format_sql", true);
      hibernateProperties.put("connection.pool_size", 3);
      hibernateProperties.put("current_session_context_class", "thread");
      hibernateProperties.put("hibernate.hbm2ddl.auto", "update");
      c.addProperties(hibernateProperties);
      
      StandardServiceRegistryBuilder registry = new StandardServiceRegistryBuilder();
      registry.applySettings(c.getProperties());

      ServiceRegistry serviceRegistry = registry.build();
      MetadataImplementor metadata = (MetadataImplementor) new MetadataSources(serviceRegistry).buildMetadata();

      SchemaUpdate schemaExport = new SchemaUpdate(serviceRegistry, c);

      // use this line when exporting the whole DDL 
      //SchemaExport schemaExport = new SchemaExport(serviceRegistry,c);
      File f = new File("export.sql");  
      schemaExport.setOutputFile(f.getAbsolutePath());
      System.err.println(f.getAbsolutePath());
      schemaExport.execute(true, false);
      

      if (schemaExport.getExceptions().size() > 0) {
         Iterator iterator = schemaExport.getExceptions().iterator();
         int cnt = 1;
         LOGGER.warn(schemaExport.getExceptions().size() + " errors occurred while performing .");
         while (iterator.hasNext()) {
             LOGGER.error("Error #" + cnt + ": " + iterator.next().toString());
         }

     }
      
      ( (StandardServiceRegistryImpl) serviceRegistry ).destroy();
  }
  
  /**
   * Scans all classes accessible from the context class loader which belong to the given package and subpackages.
   *
   * @param packageName The base package
   * @return The classes
   * @throws ClassNotFoundException
   * @throws IOException
   */
  private static Class[] getClasses(String packageName)
          throws ClassNotFoundException, IOException {
      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
      assert classLoader != null;
      String path = packageName.replace('.', '/');
      Enumeration resources = classLoader.getResources(path);
      List dirs = new ArrayList();
      while (resources.hasMoreElements()) {
          URL resource = resources.nextElement();
          dirs.add(new File(resource.getFile()));
      }
      ArrayList classes = new ArrayList();
      for (File directory : dirs) {
          classes.addAll(findClasses(directory, packageName));
      }
      return classes.toArray(new Class[classes.size()]);
  }

  /**
   * Recursive method used to find all classes in a given directory and subdirs.
   *
   * @param directory   The base directory
   * @param packageName The package name for classes found inside the base directory
   * @return The classes
   * @throws ClassNotFoundException
   */
  private static List findClasses(File directory, String packageName) throws ClassNotFoundException {
      List classes = new ArrayList();
      if (!directory.exists()) {
          return classes;
      }
      File[] files = directory.listFiles();
      for (File file : files) {
          if (file.isDirectory()) {
              assert !file.getName().contains(".");
              classes.addAll(findClasses(file, packageName + "." + file.getName()));
          } else if (file.getName().endsWith(".class")) {
              classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6)));
          }
      }
      return classes;
  }  
}

Wednesday, August 24, 2016

Deleting All Objects Oracle

dropping all constraints....
begin
    for r in ( select table_name, constraint_name
               from user_constraints
               where constraint_type = 'R' )
    loop
        execute immediate 'alter table '||r.table_name
                          ||' drop constraint '||r.constraint_name;
    end loop;
end loop;
then dropping all user objects....
set header off
set feedback off
select 'drop '||object_type||' '|| object_name || ';' from user_objects 
  where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION') ;
select 'drop '||object_type||' '|| object_name || ';' from user_objects 
  where object_type in ('TABLE','INDEX') order by object_type;
  
select 'PURGE RECYCLEBIN;' from dual;
select 'commit;' from dual;

Oracle DeadLock Detection

Normally deadlock generates dump file and automatically is released by oracle system process
1) check v$session
sqlplus> select sid, serial#, username, command, lockwait, osuser from v$session where lockwait is not null
2) To kill a locked session, first need to find sid, serial and use
sqlplus>alter system kill session 'sid, serial#';
*** you need have dba priviledge to kill sessions
3. To find which SQL has lock wait
sqlplus>select sql_text from v$sqltext where (address,hash_value) in (select sql_address,sql_hash_value from v$session where lockwait is not null) order by address, hash_value, piece

Thursday, July 7, 2016

Log4j : logging one package to log file and another package to another logfile ... on different levels.

Sending the only com.dashboard.process [debug] information to a file.... AND
Sending the info messages of com.dashboard [info] information to another file including the info
messages of com.dashboard.process.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration>
 <!-- an appender is an output destination, such as the console or a file; names of appenders are arbitrarily chosen -->
 <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.EnhancedPatternLayout">
   <param name="ConversionPattern" value="%d %-5p %c{1} (%F:%L) %m%n" />

  </layout>
 </appender>
 <appender name="stderr" class="org.apache.log4j.ConsoleAppender">
  <param name="target" value="System.err" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
  </layout>
 </appender>
 <appender name="file" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${log4j.dir}/dashboard.log" />
  <param name="MaxFileSize" value="2Mb" />
  <param name="MaxBackupIndex" value="5" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
  </layout>
 </appender>
 <appender name="harvestor" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${log4j.dir}/dashboard-harvest.log" />
  <param name="MaxFileSize" value="2Mb" />
  <param name="MaxBackupIndex" value="5" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
  </layout>
 </appender>

 <category name="org.springframework.ui.velocity">
  <priority value="WARN" />
 </category>
 <category name="org.springframework.web.servlet.view.velocity">
  <priority value="WARN" />
 </category>
 <category name="org.apache.velocity.runtime">
  <priority value="WARN" />
 </category>
 <category name="org.springframework.web.util" additivity="false">
  <priority value="WARN" />
 </category>
 <category name="org.eclipse.jetty.servlet">
  <priority value="WARN" />
 </category>
 <category name="com.dashboard.process" additivity="false">
  <priority value="DEBUG"></priority>
 </category>
 <category name="com.dashboard" additivity="true">
  <priority value="INFO"></priority>
 </category>

 <!-- the root category -->
 <!-- all log messages of level "debug" or higher will be logged, unless defined otherwise all log messages will be logged to the appender 
  "stdout", unless defined otherwise -->
  
  <logger name="com.dashboard">
    <level value="INFO" />
    <appender-ref ref="file" />
  </logger>

 <logger name="com.dashboard.process" additivity="false">
  <level value="DEBUG" />
  <appender-ref ref="harvestor" />
 </logger>


</log4j:configuration>


Wednesday, July 6, 2016

Eclipse Search File in Popup Menu - Eclipse Mars 4.5.

Creating a File Menu in Eclipse...


  <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="true"
            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
         <command
               commandId="org.eclipse.search.ui.openFileSearchPage"
               label="File Search..."
               style="push">
            <visibleWhen
                  checkEnabled="true">
            </visibleWhen>
         </command>
      </menuContribution>
   </extension>

Tuesday, June 14, 2016

TIBCO BW/BE get all the global variables in a project

Go in the root of your project (where .beproject / .designtimelib lives):
find . -type f -exec grep '%%' {} \; | perl -ne '@x =m!.+%%([\/\w]*)%%.+$!xmi; printf "%s\n", $x[0] if $x[0] !~ /^\s*$/;' | sort | uniq
and then making markers for all the variables in the cdd
$ cat LegacyEvents.cdd | perl -ne '@x =m!(.+)%%([\/\w]*)%%(.+)$!xmi; if (@x) { printf "%s\$\{%s\}%s\n", $x[0], $x[1], $x[2];} else { print $_; }'

Tuesday, May 31, 2016

Eclipse 4.5 - Mars - OSX - can't open my workspace - not responding

Try starting it with -clean, if that doesn't work 
try deleting .metadata/.plugins/org.eclipse.e4.workbench/ contents.

Friday, May 13, 2016

Inspecting TIBCO BE and BW ear files after build ear or studio tools

[ ! -f "${1}" ] && echo "$0: missing archive as argument." && exit 1;
[ -d ./ear ] && rm -fr ./ear
mkdir ear
cd ear
CWD=`pwd`
unzip ../${1}
unzip *.ear
mkdir sar par lib bar
cd $CWD/par
[ -f ../*.par ] && unzip ../*.par
cd $CWD/sar
[ -f ../*.sar ] && unzip ../*.sar
cd $CWD/bar
[ -f ../be.jar ] && unzip ../be.jar
cd $CWD/lib
[ -f ../lib.zip ] && unzip ../lib.zip

Friday, April 1, 2016

A poor mans software network sniffer for *niX - lsof / TCP

Substitute the _PID_ with your process id that you would like to monitor.
$(while (true) do sleep 15; /usr/sbin/lsof -p $_PID_ | grep TCP > /tmp/`date +%s`.log ;done ;) &
Result after a while

[user@pje24062 tmp]$ grep 'squid' *.log
grep: akf: Permission denied
1459530489.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530489.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530504.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530504.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530520.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530520.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530535.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530535.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530550.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530550.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530565.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530565.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530580.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530580.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530595.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530595.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530610.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530610.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530625.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530625.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530640.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530640.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530655.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530655.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530670.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530670.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530685.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530685.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530700.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530700.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)
1459530715.log:java    11363 gimsown   57u  IPv6           96397107      0t0      TCP pje24062.mycompany.com:54179->east.mycompany.com:squid (CLOSE_WAIT)
1459530715.log:java    11363 gimsown   58u  IPv6           96604834      0t0      TCP pje24062.mycompany.com:36237->192.189.187.100:squid (ESTABLISHED)

Tuesday, February 16, 2016

Starting a process remotely thru SSH

[user@prh01967.prod /home/user]$ cat startFlagsAgent.sh 
JAVA_HOME=/opt/java/hotspot/7/current/jre
PATH=$JAVA_HOME/bin:$PATH
nohup $JAVA_HOME/bin/java -jar ~/FlagsAgent-0.0.1-SNAPSHOT.jar -https > ~/agent.log &
pId=$!
echo "kill $pId" > ~/stop_agent.sh
chmod u+x ~/stop_agent.sh


  217  ssh userprh01628.prod 'bash -s' < ./startFlagsAgent.sh