Could not start the machine OVAB_12.1.2.0.0_Appliance_v1.0 because the following physical network interfaces were not found:
en0: Ethernet (adapter 1)
You can either change the machine's network settings or stop the machine.

<Mar 8, 2015 8:16:51 AM EDT> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: java.lang.AssertionError: Could not obtain the localhost address. The most likely cause is an error in the network configuration of this machine.
java.lang.AssertionError: Could not obtain the localhost address. The most likely cause is an error in the network configuration of this machine.
at weblogic.server.channels.AddressUtils$AddressMaker.getLocalHost(AddressUtils.java:38)
at weblogic.server.channels.AddressUtils$AddressMaker.<clinit>(AddressUtils.java:33)
at weblogic.server.channels.AddressUtils.getIPAny(AddressUtils.java:154)
at weblogic.protocol.configuration.ChannelHelper.checkConsistency(ChannelHelper.java:61)
at weblogic.server.channels.ChannelService.start(ChannelService.java:207)
Truncated. see log file for complete stacktrace
Caused By: java.net.UnknownHostException: dhcppc4: dhcppc4
at java.net.InetAddress.getLocalHost(InetAddress.java:1360)
at weblogic.server.channels.AddressUtils$AddressMaker.getLocalHost(AddressUtils.java:36)
at weblogic.server.channels.AddressUtils$AddressMaker.<clinit>(AddressUtils.java:33)
at weblogic.server.channels.AddressUtils.getIPAny(AddressUtils.java:154)
at weblogic.protocol.configuration.ChannelHelper.checkConsistency(ChannelHelper.java:62)
Truncated. see log file for complete stacktrace
>

weblogic.management.ManagementException: The server name bla is unknown to the administration server. Check if restart is required.
at weblogic.management.provider.internal.RuntimeAccessImpl.initialize(RuntimeAccessImpl.java:447)
at weblogic.management.provider.internal.RuntimeAccessService.start(RuntimeAccessService.java:49)
at weblogic.t3.srvr.ServerServicesManager.startService(ServerServicesManager.java:462)
at weblogic.t3.srvr.ServerServicesManager.startInStandbyState(ServerServicesManager.java:167)
at weblogic.t3.srvr.T3Srvr.initializeStandby(T3Srvr.java:881)
at weblogic.t3.srvr.T3Srvr.startup(T3Srvr.java:568)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:469)
at weblogic.Server.main(Server.java:71)

Cause The -Dweblogic.Name command line property specifies a server that does not exist in the configuration that is active on the administration server. This can occur if the managed server was added to the configuration along with non-dynamic changes that affect the administration server. In this case, the administration server must be restarted.

Action Check to see if the administration server is marked as needing a restart. If it is, then restart the administration server before trying to boot this managed server. Check the configuration for the list of configured servers.

Yet there is another explanation: that your managed server is connecting to an admin belonging to a different domain! Check that there are no processing listening on the ip/port that you have given as admin url to the weblogic server.

Monday, September 21, 2015

For some local JVMs the Visual GC plugin (version 2.2.1) works, but for instance when I connect JVisualVM to itself I get "Not supported for this JVM" while all the rest works, also the MBean plugin
It's of course the same JVM...
I have tried running jstatd, same story...

I am very sorry, Visual GC plugin is one of my favorite tools... I only wish it failed with some diagnostics... frustrating...

So, the FilteringClassLoader 10170360 separates from the System Classloader ANYTHING inside the EAR module.
The FilteringClassLoader 6976334 separates the WebApp from the EAR.WebApp and EJB share the same Application Classloaders GenericClassLoader 1771581.

git clone https://github.com/jewes/gchisto.git
cd gchisto
set JAVA_HOME=d:\pierre\Java\jdk1.7.0_79
d:\apps\apache-maven-3.3.3\bin\mvn clean install
cd target
java -jar gchisto-1.0.1-SNAPSHOT.jar
beware that it requires also the jars in the lib folder - they are included in the MANIFEST.MF file...
I have run the tool on some PROD gc.... I was quite pleased with the result, you get almost all the information you need to assess how bad the situation is - of course you will never know WHAT caused your trouble, but you know when and how much CPU and wait time you are paying for Minor GC and Full GC.

Friday, September 18, 2015

Reading on StackOverflow some people report issues when you take a heap profiling with jmap (jmap -dump or jmap -histo... NOT with jmap -heap) using root rather than actual user who started the JVM process.
Specifically you might get a:

/cs/java/jdk160_85-64b/bin/jmap -F -dump:format=b,file=/tmp/PIPPOheapdump20150918.hdump 10166
10166: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding

At this point you do a ps -ef to find out who started that JVM.... and you get a NUMBER (uid) rather than a username...!!! unfortunately you cant "sudo su - ".... so you must do a reverse lookup of the UID...using the "getent passwd UID" command:

Tuesday, September 15, 2015

If you invoke WS using SEI through jaxws-rt, you might encounter an issue where your PERM space is filled with instances of com/sun/xml/ws/client/WSServiceDelegate$DelegatingLoader and you get a wonderful OutOfMemory PERMGEN error.
Looking at the code in
http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.ws/jaxws-rt/2.2.8/com/sun/xml/ws/client/WSServiceDelegate.java?av=f we see that each invokation to createEndpointIFBaseProxy will instantiate a new DelegatingLoader(loader1, loader2); (which is an inner class).... createEndpointIFBaseProxy is called for each getPort call...
This inner class was not there in previous versions of the library.

So you might want to try an older version of the library ... or to apply some caching trick so as to avoid a getPort call for every WS invokation (if the WS is always the same, it seems to me that you don't need to go through all the work of creating a new Proxy for each call.... )

Saturday, September 12, 2015

I have extensively used JRockit Mission Control and really missed when I moved to Sun-JVM projects.... now that we use WebLogic 12 we have Java 1.7 (> u40) and so we can use Java Mission Control (JMC), which is exactly like the JRockit version..... with its fantastic Flight Recorder...

Awesome presentation here ( a bit blabla in the first few minutes.... just be patient...)

Now in jvisualvm you can add remote host, then right-click on the host, "add jstatd connection" and this will connect to the default 1099 port on remote host (it's a RMI server, so it uses the default RMI port)

use "jps " from your local machine to check that the jstatd is actually reachable.

This guy Patrick Peschlow (possibly a superhuman, a hero.... most likely a German, only Germans can love so much classifications) did an amazing job at illustrating all (most of) the JVM flags.
He explained it all in such a clear and precise way that I was about to cry for the emotion.

This is possibly one of the weirdest exceptions I have ever seen...spooky and unreal...
It turns out that the root cause could also be that tablespace is full, or other DB-related issues.... but it's NOT a WLS or Application issue (apart from being a useless error message...)

The way I understand it is that a UCP is a RAC-specific Connection Pool service running UNDER the WebLogic connection pool, and handling RAC-specific features like seamless recovery from node failures.

PS the whole stacktrace is:

Caused By: java.sql.SQLException: java.lang.ClassCastException: java.lang.Boolean cannot be cast to oracle.ucp.jdbc.oracle.OracleConnectionAffinityContext
at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:278)
at weblogic.jdbc.common.internal.RmiDataSource.getPoolConnection(RmiDataSource.java:503)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:594)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:545)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:538)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassCastException: java.lang.Boolean cannot be cast to oracle.ucp.jdbc.oracle.OracleConnectionAffinityContext
at oracle.ucp.jdbc.oracle.RACManagerImpl.selectConnectionPerRCLBAndAffinity(RACManagerImpl.java:2126)
at weblogic.jdbc.common.rac.internal.UCPRACModuleImpl.getConnection(UCPRACModuleImpl.java:269)
at weblogic.jdbc.common.internal.HAConnectionPool.reserve(HAConnectionPool.java:264)
at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:137)
at weblogic.jdbc.common.internal.RmiDataSource.getPoolConnection(RmiDataSource.java:501)
Truncated. see log file for complete stacktrace

Tuesday, September 8, 2015

http://www.sentex.net/~mwandel/ftpdmin/ ftpdmin .... if all you need is to have a colleague send you a big file which doesn't fit in an email, this utility is for you.... just remember to start it with a root dir, because you don't want to give access to your whole hard drive.... you can operate on it using the windows built-in fto client, and just hit ENTER when asked for username and password...

Friday, September 4, 2015

I have stumbled upon a couple of blog posts speaking very negatively about Toptal... I have (proudly) passed their first 2 stages of interviews - then I have decided to opt out because I prefer to employ my free time to study, do sport and read books, rather than trying to make extra money coding websites for which I have really no knack.

Here a few considerations

The Codility tests are difficult, yes. But they are not impossible and with some exercise (I have invested maybe 3 days) you can really improve and learn some common strategies. For me it was very rewarding to learn all those algorithms, and I found the tutorials published on Codility site tremendously interesting. Maybe in real life very rarely you have to implement such algorithms, just like in real life you don't have to use Maxwell equations, but still being able to code complex problems is part of your engineer background, so stop bitching.

Part 2 of the interview can be some time after the Codility tests, so I suggest you review your code before part 2, because they might ask you to justify your coding.

The "face to face" interview is also quite challenging, you must code real time while the interviewer watches you. In my case the interviewer was extremely kind and this helped me a lot not to go totally in panic. The problem was relatively simple, much simpler than the Codility problems, but honestly having to code while someone watches adds quite some hindrance to the task. On the whole it was stressful but rewarding. Hey I know nobody loves being interviewed, but unfortunately no pain no gain, it's part of life, so stop bitching.

I have no clue how much you get paid and which kind of projects you can work on.