Freitag, 25. Januar 2013
WAS7 enable debugging
In order to connect to a remote java process. The JVM must be started in debugging-mode.
Application servers > server1 > Process definition > Java Virtual Machine
Mittwoch, 9. Januar 2013
Drucken-Link
Um eine HTML-Seite zu drucken kann man einen Link in seine HTML-Seite einfügen.
window.print();
Seite-Drucken
Reparieren eines kaputten WAS7 Profiles
C:\Programme\IBM\SDP75\runtimes\base_v7\bin\ProfileManagement\pmt.bat
C:\Programme\IBM\SDP75\runtimes\base_v7\bin>manageprofiles -delete -profileName
was70profile1
INSTCONFSUCCESS: Erfolg: Das Profil ist nicht mehr vorhanden.
C:\Programme\IBM\SDP75\runtimes\base_v7\bin>manageprofiles -create -profileName
was7profile1
INSTCONFSUCCESS: Erfolg: Das Profil was7profile1 ist jetzt vorhanden. Weitere In
formationen zu diesem Profil finden Sie in der Datei "C:\Programme\IBM\SDP75\run
times\base_v7\profiles\was7profile1\logs\AboutThisProfile.txt".
C:\Programme\IBM\SDP75\runtimes\base_v7\bin>startserver server1
ADMU0116I: Tool information is being logged in file
C:\Programme\IBM\SDP75\runtimes\base_v7\profiles\was7profile1\logs\s
rver1\startServer.log
ADMU0128I: Starting tool with the was7profile1 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 1720
- Port der Administrationskonsole: 9060
- Sicherer Port der Administrationskonsole: 9043
- Port für HTTP-Transport: 9080
- Port für HTTPS-Transport: 9443
- Bootstrap-Port: 2809
- SOAP-Connector-Port: 8880
Montag, 9. Juli 2012
DB2 - retrieve generated id
If you what to know the which ID was given to a record after an insert .
Record successfuly save with id: 815
e.g. insert into mytable (col1, col2, col3) values ( 'val1', 'val2', 'val3');
just calll
values identity_val_local();
it will return the last generated id.
e.g. 2
Sonntag, 4. Dezember 2011
JAVA_HOME auf dem MAC
wie setzt man die JAVA_HOME-Umgebungsvaribale auf dem MAC? Hier ist die Anwort, wie man dies z.B. in einem Script tun sollte.
/usr/libexec/java_home
Montag, 14. November 2011
Suche in DB2 mit Java
Häufig muss man mit Java in relationalen Datenbanken nach Texten suchen.
Dabei sollte die Groß- und Kleinschreibung nicht von Bedeutung sein.
Doch wie erreicht man dies?
Komplizierter wird dies noch, wenn man die deutschen Sonderzeichen beachtet.
Was passiert mit eine "ß" ? Wie wird es umgesetzt?
Die Antwort ist folgende.
Sowohl die Daten in der Datenbank, als auch die Java-Strings müssen mit
toLower() auf lower-case umgestellt werden.
Im folgenden kommt ein Real-World-Beispiel, wie es oft in unseren Programmen auftaucht. Wenn man ein "_" als searchtTerm übergibt gibt es keine Einschränkung.
Man beachte, das im DB2 mit java die substr()-funktion aufgerufen werden muss, sonst klappt das nicht.
In Java erfolgt, das toLower wie folgt.
Dabei sollte die Groß- und Kleinschreibung nicht von Bedeutung sein.
Doch wie erreicht man dies?
Komplizierter wird dies noch, wenn man die deutschen Sonderzeichen beachtet.
Was passiert mit eine "ß" ? Wie wird es umgesetzt?
Die Antwort ist folgende.
Sowohl die Daten in der Datenbank, als auch die Java-Strings müssen mit
toLower() auf lower-case umgestellt werden.
Im folgenden kommt ein Real-World-Beispiel, wie es oft in unseren Programmen auftaucht. Wenn man ein "_" als searchtTerm übergibt gibt es keine Einschränkung.
Man beachte, das im DB2 mit java die substr()-funktion aufgerufen werden muss, sonst klappt das nicht.
select distinct(BERATERNAME) as beratername
from ALMAUSR.RSB_RUECK
where lower(BERATERNAME) like :searchTerm or ('_' = substr(:searchTerm, 1, 1))
In Java erfolgt, das toLower wie folgt.
String searchTerm = "Außendienst";
searchTerm = searchTerm.toLowerCase(Locale.GERMANY);
searchTerm = searchTerm + "%";
Montag, 20. Juni 2011
JNDI - member of group - Real life example
Das Problem:
Bei der Suche im Active Directory sie die Anzahl der Ergebnisse künstlich beschränkt.
Dies ist ein Mechanismus im Active Directory um sich gegen zu große Ergebnismengen zu schützen. Dies ist verständlich, da das AD ein Herzstück der IT-Landschaft ist und auf keinen Fall überlastet werden darf. Es gibt jedoch sehr viele Organisationen die mehr als 1499 Mitarbeiter bzw. UserIds verwalten.
AD 2003 Liefert 1499 Datensätze zurück - Beim AD 2000 sind das 999.
Um die Übrigen Datensätze auszulesen muss man manuell Pagen.
Wenn man z.B. nach einer Gruppe mit mehr als 3000 Mitglieder such muss
man dies in 3 Etappen machen.
Als Antwort bekommt man nach der ersten Anfrage :"member;range=0-1499"
member;range=1500-2999
member;range=3000-*
Das Sternchen bedeutet, dass es keine weiteren Ergebnisse gibt.
Der nun folgende Code beschreibt kann als Lösung
Bei der Suche im Active Directory sie die Anzahl der Ergebnisse künstlich beschränkt.
Dies ist ein Mechanismus im Active Directory um sich gegen zu große Ergebnismengen zu schützen. Dies ist verständlich, da das AD ein Herzstück der IT-Landschaft ist und auf keinen Fall überlastet werden darf. Es gibt jedoch sehr viele Organisationen die mehr als 1499 Mitarbeiter bzw. UserIds verwalten.
AD 2003 Liefert 1499 Datensätze zurück - Beim AD 2000 sind das 999.
Um die Übrigen Datensätze auszulesen muss man manuell Pagen.
Wenn man z.B. nach einer Gruppe mit mehr als 3000 Mitglieder such muss
man dies in 3 Etappen machen.
Als Antwort bekommt man nach der ersten Anfrage :"member;range=0-1499"
member;range=1500-2999
member;range=3000-*
Das Sternchen bedeutet, dass es keine weiteren Ergebnisse gibt.
Der nun folgende Code beschreibt kann als Lösung
package de.wwag.arch.portal.service.benutzer.ads;
/**
* range.java
* December 2004
* Sample JNDI application to demonstrate range retrieval
*
*/
import java.util.Hashtable;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
//if we were going to do this properly, should check that the server supports
//the range retrieval control 1.2.840.113556.1.4.802 !
public class range {
public static void main (String[] args) {
Hashtable<String,String> hashtable = new Hashtable<String,String>();
String serverName = "domainname";
String provider_url = "ldap://" + serverName + ":389";
String ldapuser = "domainname\\userid";
String ldappasswd = "passwd";
hashtable.put("java.naming.factory.initial",
"com.sun.jndi.ldap.LdapCtxFactory");
hashtable.put("java.naming.provider.url", provider_url);
hashtable.put("java.naming.ldap.version", "3");
hashtable.put("java.naming.security.authentication", "simple");
hashtable.put("java.naming.security.principal", ldapuser);
hashtable.put("java.naming.security.credentials", ldappasswd);
try {
// Create the initial directory context
LdapContext ctx = new InitialLdapContext(hashtable,null);
// Create the search controls
SearchControls searchCtls = new SearchControls();
//Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
//specify the LDAP search filter
String searchFilter = "(&(objectClass=group)(CN=GAP_ALMA_BENUTZER_PROD))";
//Specify the Base for the search
String searchBase = "dc=ww-intern,dc=de";
//initialize counter to total the group members and range values
int totalResults = 0;
int Start = 0;
int Step = 1500;
int Finish = 1499;
boolean Finished = false;
String Range;
//loop through the query until we have all the results
while (!Finished) {
//Specify the attributes to return
Range = Start + "-" + Finish;
String returnedAtts[]={"member;Range=" + Range};
searchCtls.setReturningAttributes(returnedAtts);
//Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
//Loop through the search results
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult)answer.next();
System.out.println(">>>" + sr.getName());
//Print out the members
Attributes attrs = sr.getAttributes();
if (attrs != null) {
try {
for (NamingEnumeration ae = attrs.getAll();ae.hasMore();) {
Attribute attr = (Attribute)ae.next();
//check if we are finished
if (attr.getID().endsWith("*")) {
Finished=true;
}
System.out.println("Attribute: " + attr.getID());
for (NamingEnumeration e = attr.getAll();e.hasMore();totalResults++) {
System.out.println(" " + totalResults + ". " + e.next());
}
}
}
catch (NamingException e) {
System.err.println("Problem printing attributes: " + e);
}
Start = Start + Step;
Finish = Finish + Step;
}
}
}
System.out.println("Total members: " + totalResults);
ctx.close();
}
catch (NamingException e) {
System.err.println("Problem searching directory: " + e);
}
}
}
Abonnieren
Posts (Atom)



