20 October 2015

Software Architecture Patterns

Very interesting free ebook from O'reilly: Software Architecture Patterns

It analyzes 5 Architectures providing Pros & Cons of each one, adding good thoughts. (please, read the book, it is small enough :P ).

A summary among the different characteristics can be found at:

https://www.oreilly.com/ideas/software-architecture-patterns/page/7/pattern-analysis-summary


14 October 2015

WebLogic Server 10.3.6 for Mac OSX

If you are trying to install WLS 10.3.6 in OS X Yosemite 10.10.5 then a couple error you may face:

1) Download generic installer; if you choose cocoa mac installer, then you'll get:

(or using system property: -Dos.name=unix  )
(or -Dos.name="OS X")
Exception in thread "chmodFile" java.lang.Error: unix is not a supported OS platform.
    at java.lang.UNIXProcess$Platform.get(UNIXProcess.java:164)
    at java.lang.UNIXProcess.(UNIXProcess.java:168)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:485)
    at com.bea.plateng.common.util.Chmod.chmod(Chmod.java:71)
    at com.bea.plateng.common.util.Chmod.wildcardChmod(Chmod.java:110)
    at com.bea.plateng.common.util.Chmod.wildcardChmod(Chmod.java:104)
    at com.bea.plateng.wizard.installer.utils.chmod.ChmodHelper.chmodFromDefinition(ChmodHelper.java:98)
    at com.bea.plateng.wizard.installer.silent.tasks.ChmodFileTask.execute(ChmodFileTask.java:80)
    at com.bea.plateng.wizard.installer.silent.tasks.ChmodFileTask.run(ChmodFileTask.java:75)
    at java.lang.Thread.run(Thread.java:745)


2) If you receive the message "Insufficient disk space!" , although you know you have enough space, the use the following parameter:

 i.e.:

java -Dspace.detection=false -Xmx1024m -jar wls1036_generic.jar


(also, a small installer window could appear, and it is from the same reason).

15 September 2015

It is not a bug


PPA: NO_PUBKEY C2518248EEA14886

I faced the following error in Ubuntu 15.04 when trying to: sudo apt-get update

GPG error: http://ppa.launchpad.net vivid Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C2518248EEA14886
Googling, there are several solutions for it, but none worked.
Only a old script that is in a couple of Ubuntu forums:

http://ubuntuforums.org/archive/index.php/t-2257304.html





Script:

#!/bin/sh
# This script adds PPA keys to the primary keyring in /etc/apt/trusted.gpg
# thus getting around the GPG limit of 40 keyrings.
# WARNING: It's only intended as the last resort measure.
# Rather than using it, reduce your use of PPAs.
set -e

keyserver=http://keyserver.ubuntu.com:11371
launchpadapi=https://launchpad.net/api/1.0

[ -r /etc/lsb-release ] && . /etc/lsb-release ||
{ echo Cannot read /etc/lsb-release >&2; exit 1;}

[ Ubuntu = "$DISTRIB_ID" ] ||
{ echo This script is supposed to run on Ubuntu >&2; exit 2;}

[ -n "$DISTRIB_CODENAME" ] && codename=$DISTRIB_CODENAME ||
{ echo Cannot determine installed Ubuntu release >&2; exit 2;}
release=$DISTRIB_RELEASE

usage() {
# Parameter: $1 - error message
<<! cat >&2
$1
Usage: sudo $0
Example: sudo $0 $codename
!
exit 3
}

[ 0 = `id -u` ] || usage "Please run with sudo"



if [ -x /usr/bin/ubuntu-distro-info ]
then
codenames=`/usr/bin/ubuntu-distro-info --all | tr '\n' \|`
eval \
case \$1 in \
"$codenames$codename"') codename=$1;;
*) usage "Wrong release name: $1";;' \
esac
else
[ 12 -le "${release%%.*}" ] &&
<<! cat >&2
This script works best with package 'distro-info' installed.

Consider installing distro-info with
sudo apt-get install distro-info

Continuing execution anyway

!

case $1 in
lucid|precise|trusty|utopic|vivid|$codename) codename=$1;;
*) usage "Wrong release name: $1";;
esac
fi

echo "Release: $codename"
echo Please wait...

tempfile() {
# Parameters: $1 - variable to hold the file name
# $2 - short file content description
local tmp
if tmp=`mktemp`
then
eval "$1='$tmp'"
currenttrap="${currenttrap}rm -f -- '$tmp';"
trap "$currenttrap" EXIT
else
echo "Cannot create temporary file for $2" >&2
exit 2
fi
}

tempfile sources 'APT sources'
tempfile fingerprints 'key fingerprints'
tempfile key 'signing key'

sourcelist=/etc/apt/sources.list
eval $(apt-config shell sourcelist Dir::Etc::SourceList/f)
sourceparts=/etc/apt/sources.list.d/
eval $(apt-config shell sourceparts Dir::Etc::SourceParts/d)
grep -hs '^[^#]' "$sourcelist" "$sourceparts"*.list > "$sources" ||:
grep -q '^Types:' "$sources" && {
echo "This script doesn't work with RFC822-style sources.list" >&2; exit 2
}

for ppaowner in $(
awk -F/ '/^deb[ \t]+.*ppa\.launchpad.*[ \t]+'$codename'/{print$4}' \
"$sources"
)
do
wget -qO- "$launchpadapi/~$ppaowner/ppas" |
awk -F'": "|"}' -v'RS="?, "' '/key_fingerprint/{print $2}' |
sort -u >> "$fingerprints"
done
for fingerprint in `sort -u "$fingerprints"`
do
wget -qO- "$keyserver/pks/lookup?op=get&search=0x$fingerprint" |
sed '/-BEGIN/,/-END/!d' > "$key"
if test "$fingerprint" = "$(
apt-key adv --with-colons --with-fingerprint "$key" |
awk -F: '/^fpr/{print $10}'
)"
then
apt-key add "$key"
else
<<! cat - "$key" >&2
Key rejected: retrieved key doesn't match the fingerprint!

Fingerprint: $fingerprint

Retrieved key:
$(apt-key adv --with-fingerprint "$key")
================================================== ========
!
fi
done

rm -f -- "$sources" "$fingerprints" "$key"
trap - EXIT

WebLogic Server XML Parsers

Many times there are question in WebLogic Server about parser factories:

java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature

  java.lang.ClassCastException: weblogic.xml.jaxp.RegistryXMLInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
    Error weblogic.xml.jaxp.RegistryXMLInputFactory cannot be cast to javax.xml.stream.XMLInputFactory

 java.lang.NoSuchMethodError: javax.xml.parsers.DocumentBuilderFactory.newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/DocumentBuilderFactory;
java.lang.NoClassDefFoundError: org/apache/xerces/jaxp/datatype/XMLGregorianCalendarImpl$Parser




Because the classpath retrieve from different parts these implementations, including the JDK6 which bundles in it now.

This is how you can change by system properties the implementation, using xerces:

-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParser=org.apache.xerces.jaxp.SAXParserImpl

maybe you'll need to add xercesImpl.jar to your classpath. 



More info: 
https://docs.oracle.com/cd/E57014_01/wls/WLACH/pagehelp/Corexmlregistryxmlregistryconfigtitle.html



09 July 2015

Eclipse Platform Runtime Binary

Although, it is on the web, it is not easier to get a basic/minimal Eclipse installer.

You need to go to: http://download.eclipse.org/eclipse/downloads/
and get the desired version.

i.e.: 4.5 Luna: http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/


There you can find several basic binaries, such us, SDK, Plug-ins, SDK-RPC, etc.

The smallest is: Platform Runtime Binary

More details in each binary: http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/details.html#PlatformRuntime

Anyway, if you want this basic version to install another plug-ins, such us, Dynamic Languages Toolkit then you need to download another version (it is not sufficent with only PLatform Runtime Binary).




01 June 2015

monson-haefel.com @archive.org

The domain http://www.monson-haefel.com/ seems to be lost by Monson-Haefel and for the same reason the Errata page of his bestselling J2EE Web Services http://www.monson-haefel.com/jws_errata.html

Although, it is JAX-RPC and kind of old for current days, still is a good knowledge repository.

The page can be retrieved at https://web.archive.org/web/20111206223908/http://www.monson-haefel.com/jws_errata.html


Blog Archive

Disclaimer

Qux