Um Beanshell-Skripts komfortabel in eclipse bearbeiten zu können (z.B. mit code completion oder javadoc-Einträgen) müssen Beanshell-Dateien als Java-Content registriert werden:
Preferences -> General -> Content Types nun auf der rechten Seite zu
Text -> Java Source File gehen und
*.bsh als Dateityp ergänzen.
Archiv der Kategorie: Java
Javadoc in Java 8
Beim Erstellen der Javadoc eines Java8-Projektes kommt es zu Fehlermeldungen, wenn das javadoc-Binary aus der falschen Java-Laufzeitumgebung genutzt wird. So werden dann bspw. Lambda-Ausdrücke und Klassen der rt.jar
als Illegal Expression markiert.
Die Auswahl der korrekten Java-Laufzeitumgebung erfolgt für Ant in den Einstellungen für das entsprechende Build-File
Treten weitere Fehler (z.B. HTML-Syntaxfehler auf) kann auch dir Option <del>Xdoclint:none
hilfreich sein. Für den javadoc-Task in Ant wird dieses durch ein nested tag der Form
<arg value="-Xdoclint:none" /> angegeben
Ivy in ant-task failed
Tritt beim Ausführen eines ant-tasks
, der ivy
erfordert der folgende Fehler auf:
1 |
failed to create task or type antlib:org.apache.ivy.ant:retrieve |
ist das Problem recht einfach zu beheben. Ant
findet das ivy
-jar nicht. Dieses kann an einem beliebigen Ort abgelegt werden und muss dann per symbolischem Link im lib
-Verzeichnis der Ant-Installation ($ANT_HOME/lib
, /usr/share/ant/lib
oder $HOME/.ant/lib
) verknüpft werden.
Webapp-Deployment in Oracle WLS 12c
Installation
- Download der Generic-Version des “Installers with Oracle WebLogic Server and Oracle Coherence”
- Ausführen des Archives startet einen Konfigurationsprozess.
- Installation in eclipse:
>Window..Preferences..Server..Runtime Environments..Add
> Ggf. erst einmal Server-Adapter herunterladen
> Hinzufügen eines neuen Servers über den Server-Tab und New
Application-Debug in eclipse
Um aus eclipse heraus eine Anwendung debuggen zu können, muss im Startscript des WLS der Port für das Remote-Debugging gesetzt werden. Folgende Ergänzung der Java-Optionen in der startWebLogic.cmd im Domain-Verzeichnis und der anschließende Neustart des Servers sin dazu erforderlich:
1 |
set JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n %JAVA_OPTIONS% |
Troubleshooting
Fehler “[Deployer:149189]…”
Tritt bei der Installation eines EAR-Archives ein Fehler folgenden Inhalts auf:
1 |
[Deployer:149189]Attempt to operate ‘distribute’ ... Operation can not be performed until server is restarted. |
sollte geprüft werden, ob möglicherweise nur ein Clusterknoten heruntergefahren ist. Dieser muss hochgefahren und die Anwendung vollständig neu installiert werden. Sollte das nicht ausreichen, ist hier bspw. auch noch ein weiterer Workaround beschrieben.
EAR-Archiv in eclipse erstellen
Um aus einem Projekt automatisch ein EAR zu generieren, muss ein Enterprise Application Project mit Bezug auf das gewünschte Projekt angelegt werden. Um dann die Bibliotheken in das EAR-File zu übertragen, muss in den Projekteinstellungen der Punkt Web Deployment Assembly entsprechend bearbeitet werden.
Exportiert man das Projekt dann in ein EAR File (Export..Java EE..EAR File), wird das aus dem Build-Prozess erstellte WAR-File zusammen mit den Bibliotheken in ein EAR File gepackt.
Im ant.file
kann das nachfolgende Element verwendet werden:
1 2 3 |
<ear destfile="deploy/file.ear" appxml="${source.dir}/_metadata/application-wls12c.xml"> <fileset dir="deploy" includes="*.jar,*.war"/> </ear> |
Log4j-Konfiguration: Abschalten des 3rd-Party-Class-Logging
Manchmal wird von den Klassen von Drittanbietern ein derart exzessives Logging betrieben, dass man in den eigenen Logging-Meldungen den Überblick verliert. Beispiele dafür sind JasperReports und Quartz. Eine Möglichkeit die Logausgabe zu unterbinden besteht darin, die Logkonfiguration um folgenden Eintrag zu ergänzen:
1 2 3 4 5 6 7 8 9 10 11 |
<!-- JasperReport --> <category name="net.sf.jasperreports"> <priority value="error"/> </category> <category name="org.apache.commons.digester"> <priority value="error"/> </category> <category name="org.apache.commons.beanutils.converters"> <priority value="error"/> </category> <!-- /JasperReport --> |
Für priority
kann natürlich jeder beliebige andere Status angegeben werden. Setzt man priority
auf “OFF” wird das Logging für die Klasse abgeschaltet.
Webservice stub in eclipse generieren
Um in eclipse einen Webservice stub zu generieren sind folgende Schritte erforderlich:
- Anlegen eines Projektes
- Im Kontextmenü über
New
..Other
zum Interface-Wizard gehen - Im Ordner
Web Services
den Wizard für die Erstellung einesWeb Service Client
auswählen undNext
betätigen - Im darauffolgenden Dialog die URL zur Servicedefinition (WSDL) angeben
Soll auch eine Beispielsammlung verfügbarer Webservice-Routinen zu Testzwecken generiert werden (Dies ist für neue/unbekannte Webservices sehr hilfreich!), muss der Schieberegler im linken Dialogbereich auf die Position “Test client” geschoben werden. - Auf der nächsten Seite sollte der Ausgabeordner (Output folder) geprüft werden und ein Häkchen bei
Define custom mapping for namespace to package
gesetzt werden. Das ermöglicht die explizite Angabe eines Package-Namens für den Service. Andernfalls wird dieser aus dem Namespace generiert. - Als
namespace
wird im Folgedialog dertargetNamespace
der WSDL gesetzt, als Packagename der gewünschte.
- Mit
Next
wird dann der Prozess gestartet. Wenn das im Anschluss automatische Publizieren auf der Zielplattform schiefgeht, ist das kein Grund zu verzagen. Nach dem Starten aus dem Projekt heraus mit den entsprechenden Bibliotheks- und Deploymentangaben funktioniert es dann. - Die Einstellungen für den TestClient können i.d.R. beibehalten werden:
Struts
In einer STRUTS-Anwendung kann die Definition des FormBean nicht gefunden werden:
Tags in struts-config.xml
-Quellcode kontrollieren. Da muss das @
Validation:
validation.xml
und validator-rules.xml
in WEB-INF
-Verzeichnis kopieren
endorsed-Parameter
Um ältere Systembibliotheken innerhalb einer Applikation zu verwenden, werden diese (üblicherweise) in einem mit “endorsed” bezeichneten Verzeichnis abgelegt.
Um die im endorsed-Verzeichnis abgelegten Dateien zu verwenden, müssen am Application-Server folgende Einstellungen vorgenommen werden:
- Container:Administration:Serverattribute
Hinzufügen des Parameters-Djava.endorsed.dirs="/opt/lib/ORACLE/conf/<host>/_endorsed.basiskarte.admin"
(z.B.-Djava.endorsed.dirs="/opt/lib/ORACLE/conf/lvwebdev.lvsn.smi.sachsen.de/_endorsed.basiskarte.admin"
)
Webapp-Deployment in Tomcat 7
Bei der Aktualisierung eines alten Projekts (dms-docview) war es absolut unmöglich, dieses in tomcat 7 zum laufen zu bringen. Ursprünglich betrieben unter Oracle Application Server mit Java 1.4 sollte die Weiterentwicklung nun mit Tomcat 7, Weblogic-Server (Unternehmenswahl :() und Java 7 erfolgen. Beim Laden der Applikation verweigerte Tomcat den Dienst mit der Meldung:
1 2 |
SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] |
bzw.
1 2 |
SEVERE: Catalina.start: org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]] |
Ursache war letztendlich ein fehlender Slash (‘/’) in der Servlet-Konfiguration der web.xml
. Servlets dürfen beim Mapping in Tag
<url-pattern> nur mit vorangestelltem ‘/’ geschrieben werden.