http://plumbum.readthedocs.org/en/latest/
I haven't evaluated it, but surely I am 100% in favor of writing shell scripts in Python...
ALL unix shells languages suck big time... I am 10 times more productive in Python (even being a beginner) than in bash or korn...
Thursday, November 28, 2013
Eclipse: open .sh files with text editor
Something annoying is that in Eclipse, when you open a .sh file, it will run an external editor to edit it.
Open Preferences, General/Editors/File Associations and add the extension (file type) .sh and associate the editor "Text Editor".
Open Preferences, General/Editors/File Associations and add the extension (file type) .sh and associate the editor "Text Editor".
Labels:
eclipse
Java, JMX, WebLogic and DomainRuntime
I try to run the code:
http://docs.oracle.com/cd/E12840_01/wls/docs103/jmx/accessWLS.html#wp1111297
I get this error:
java.net.MalformedURLException: Unsupported protocol: t3
I add "C:\Oracle\Middleware\wlserver_10.3\server\lib\wljmxclient.jar" to the classpath
This time I receive a
"org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 211 completed: No" caused by java.io.IOException: End-of-stream at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.readFully(SocketOrChannelConnectionImpl.java:666)
This is apparently an issue in the JVM (see Doc ID 1598451.1 ) ... they say one can add -Dcom.sun.CORBA.connection.ORBHighWaterMark=300 ... personally I give up in frustration.
http://docs.oracle.com/cd/E12840_01/wls/docs103/jmx/accessWLS.html#wp1111297
I get this error:
java.net.MalformedURLException: Unsupported protocol: t3
I add "C:\Oracle\Middleware\wlserver_10.3\server\lib\wljmxclient.jar" to the classpath
This time I receive a
"org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 211 completed: No" caused by java.io.IOException: End-of-stream at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.readFully(SocketOrChannelConnectionImpl.java:666)
This is apparently an issue in the JVM (see Doc ID 1598451.1 ) ... they say one can add -Dcom.sun.CORBA.connection.ORBHighWaterMark=300 ... personally I give up in frustration.
Wednesday, November 27, 2013
weblogic.management.provider.EditSaveChangesFailedException
I try to activate a session in WLS, and I get this
java.lang.RuntimeException: weblogic.management.provider.EditSaveChangesFailedException
caused by
java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:883) at weblogic.management.provider.internal.DescriptorHelper.getRecoveryFileForNewFile(DescriptorHelper.java:205) at weblogic.management.provider.internal.DescriptorHelper.saveDescriptorTree(DescriptorHelper.java:122) at weblogic.management.provider.internal.DescriptorHelper.saveDescriptorTree(DescriptorHelper.java:49) at weblogic.management.provider.internal.EditAccessImpl.saveChanges(EditAccessImpl.java:704) ... 133 more
It turned out that the file system was full :o(
No disk space monitoring? Ahi Ahi Ahi....
java.lang.RuntimeException: weblogic.management.provider.EditSaveChangesFailedException
caused by
java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:883) at weblogic.management.provider.internal.DescriptorHelper.getRecoveryFileForNewFile(DescriptorHelper.java:205) at weblogic.management.provider.internal.DescriptorHelper.saveDescriptorTree(DescriptorHelper.java:122) at weblogic.management.provider.internal.DescriptorHelper.saveDescriptorTree(DescriptorHelper.java:49) at weblogic.management.provider.internal.EditAccessImpl.saveChanges(EditAccessImpl.java:704) ... 133 more
It turned out that the file system was full :o(
No disk space monitoring? Ahi Ahi Ahi....
Labels:
weblogic
Monday, November 25, 2013
WebLogic JMS: setting TTL (time to live) aka Expiration Time on messages
you can set a Time To Live for a JMS message using the WLS console, with "Overrides / Time-to-Live Override", but you should also select the "Delivery Mode Override:" = Persistent, otherwise you get this error:
The weird thing is that this TTL Override doesn't see to work when you create a new JMS message from the WL console. If you monitor the JMS messages in the queue, the JMS Expiration is still set to 0.
In OSB, you can assign a default "JMS expiration" to the Business Service sending messages to the JMS destination, or you can assign a JMS Expiration at runtime (even in the test console).
Another way is to set the "Default Time-to-Live:" at Connection Factory level.
This is the WLST code to set the Override at JMS Destination level:
Message icon - Error An error occurred during activation of changes, please see the log for details. Message icon - Error [Management:141191]The prepare phase of the configuration update failed with an exception: Message icon - Error VALIDATION PROBLEMS WERE FOUND problem: cvc-enumeration-valid: string value 'No-Delivery' is not a valid enumeration value for delivery-mode-type in namespace http://xmlns.oracle.com/weblogic/weblogic-jms:then you should also choose what to to with the expired message (Expiration Policy:), best thing is to redirect it to an Error Destination.
The weird thing is that this TTL Override doesn't see to work when you create a new JMS message from the WL console. If you monitor the JMS messages in the queue, the JMS Expiration is still set to 0.
In OSB, you can assign a default "JMS expiration" to the Business Service sending messages to the JMS destination, or you can assign a JMS Expiration at runtime (even in the test console).
Another way is to set the "Default Time-to-Live:" at Connection Factory level.
This is the WLST code to set the Override at JMS Destination level:
#you should have created a PV_OSB_TESTModule JMSModule and a PV_OSB_TESTQ Distributed Queue cd('/JMSSystemResources/PV_OSB_TESTModule/JMSResource/PV_OSB_TESTModule/UniformDistributedQueues/PV_OSB_TESTQ/DeliveryFailureParams/PV_OSB_TESTQ') cmo.setErrorDestination(getMBean('/JMSSystemResources/PV_OSB_TESTModule/JMSResource/PV_OSB_TESTModule/UniformDistributedQueues/PV_OSB_TESTReprocessQ')) cmo.setExpirationPolicy('Redirect') cd('/JMSSystemResources/PV_OSB_TESTModule/JMSResource/PV_OSB_TESTModule/UniformDistributedQueues/PV_OSB_TESTQ/DeliveryParamsOverrides/PV_OSB_TESTQ') cmo.setTimeToLive(120000)
Saturday, November 23, 2013
JSP error page
<%@page isErrorPage="true" %> <html> <body> <h1>Error page</h1> <pre> <% if (exception != null) { out.write("exception message=" + exception.toString()); } else { out.write("no exception available"); } %> </pre> </body> </html>
Labels:
jsp
Websphere MQ: getting my feet wet into it
First install Eclipse
http://archive.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/download.php?dropFile=eclipse-SDK-3.4.2-win32.zip
Download and install it - do the custom installation without MQ Explorer which requires also Websphere Eclipse installation.
One restarted, you find an icon in the bottom right "Webpshere MQ Running".
Right click to open the Alert monitor
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.amqtac.doc/wq10860_.htm
For OSB, you should download com.ibm.mq.jar for 7.0.1 :
http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24019253&loc=en_US&cs=utf-8&lang=en
A useful tool is http://www.angussoft.co.uk/ queuezee. I could not make it work though :o(
________
HOw to configure OSB for MQ:
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/mqtransport/
new BS, Transport typed, protocol MQ
Add URI
"The MQ Connection Resource default/mqConnection specified in URI mq://local-queue?conn=default/mqConnection does not exist"
Why? Because you need to create first a New MQ Connection Resource
this tool can help:
http://www.niratul.com/
before you install, add this to env variable CLASSPATH
C:\apps\mq\com.ibm.mq.commonservices.jar;C:\apps\mq\com.ibm.mq.defaultconfig.jar;C:\apps\mq\connector.jar;C:\apps\mq\com.ibm.mq.headers.jar;C:\apps\mq\com.ibm.mq.jar;C:\apps\mq\com.ibm.mq.jmqi.jar;C:\apps\mq\com.ibm.mq.pcf.jar;C:\apps\mq\com.ibm.mq.postcard.jar;C:\apps\mq\com.ibm.mq.tools.ras.jar
(these jars are in C:\Program Files\IBM\WebSphere MQ\java\lib)
http://archive.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/download.php?dropFile=eclipse-SDK-3.4.2-win32.zip
Download and install it - do the custom installation without MQ Explorer which requires also Websphere Eclipse installation.
One restarted, you find an icon in the bottom right "Webpshere MQ Running".
Right click to open the Alert monitor
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.amqtac.doc/wq10860_.htm
For OSB, you should download com.ibm.mq.jar for 7.0.1 :
http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24019253&loc=en_US&cs=utf-8&lang=en
A useful tool is http://www.angussoft.co.uk/ queuezee. I could not make it work though :o(
________
HOw to configure OSB for MQ:
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/mqtransport/
new BS, Transport typed, protocol MQ
Add URI
"The MQ Connection Resource default/mqConnection specified in URI mq://local-queue?conn=default/mqConnection does not exist"
Why? Because you need to create first a New MQ Connection Resource
this tool can help:
http://www.niratul.com/
before you install, add this to env variable CLASSPATH
C:\apps\mq\com.ibm.mq.commonservices.jar;C:\apps\mq\com.ibm.mq.defaultconfig.jar;C:\apps\mq\connector.jar;C:\apps\mq\com.ibm.mq.headers.jar;C:\apps\mq\com.ibm.mq.jar;C:\apps\mq\com.ibm.mq.jmqi.jar;C:\apps\mq\com.ibm.mq.pcf.jar;C:\apps\mq\com.ibm.mq.postcard.jar;C:\apps\mq\com.ibm.mq.tools.ras.jar
(these jars are in C:\Program Files\IBM\WebSphere MQ\java\lib)
Labels:
MQ
OSB: Publish WSDL to UDDI
In OSB11 (Eclipse 3.5.3) if you right click on a WSDL you get
Web Services / Publish WSDL File
You choose "Publish this Web Service to the Unit Test UDDI Registry.
If you have not registered any UDDI Registry, you get this error message:
IWAB0363E No UDDI registry available
Do solve the problem, go to
http://ws.apache.org/juddi/releases.html
there is a 3.0.2,
download it, unzip it, deploy juddiv3-war-3.0.2.war to WebLogic.
in Eclipse do New , Other, enter UDDI and select "UDDI Registry".
You must create it inside a Oracle Service Bus Configuration project.
On Java side, you can use http://uddi4j.sourceforge.net/doc.html UDDI4J to invoke the UDDI services.
Web Services / Publish WSDL File
You choose "Publish this Web Service to the Unit Test UDDI Registry.
If you have not registered any UDDI Registry, you get this error message:
IWAB0363E No UDDI registry available
Do solve the problem, go to
http://ws.apache.org/juddi/releases.html
there is a 3.0.2,
download it, unzip it, deploy juddiv3-war-3.0.2.war to WebLogic.
in Eclipse do New , Other, enter UDDI and select "UDDI Registry".
You must create it inside a Oracle Service Bus Configuration project.
On Java side, you can use http://uddi4j.sourceforge.net/doc.html UDDI4J to invoke the UDDI services.
Labels:
osb11
Friday, November 22, 2013
WLST to monitor all Datasources on all Managed Servers by connecting only to the Admin
#connect to the admin server domainRuntime() allservers=ls('/ServerRuntimes/', returnMap='true') for server in allservers: allds = ls('/ServerRuntimes/' + server + '/JDBCServiceRuntime/' + server + '/JDBCDataSourceRuntimeMBeans', returnMap='true') for ds in allds: cd ('/ServerRuntimes/' + server + '/JDBCServiceRuntime/' + server + '/JDBCDataSourceRuntimeMBeans/' + ds) print server, ds, cmo.getActiveConnectionsCurrentCount()
Labels:
WLST
WebLogic JMX remote using JMX protocol and JMXTrans
Make sure this is enabled in your domain configuration:
make sure each server listens on a different jmx port:
vi /opt/oracle/domains/osbpl1do/bin/setDomainEnv.sh
restart your servers
To monitor a DataSource Active Connections:
vi myds.json:
./jmxtrans.sh start myds.json
you should get this
Result [attributeName=ActiveConnectionsCurrentCount, className=weblogic.jdbc.common.internal.DataSourceRuntimeMBeanImpl, typeName=Name=acme-import.PickupPointDS,ServerRuntime=acme-server-1,Type=JDBCDataSourceRuntime, values={ActiveConnectionsCurrentCount=0}, epoch=1385119401592]
To find the ObjectName (like: com.bea:ServerRuntime=acme-server-1,Name=acme-import.PickupPointDS,Type=JDBCDataSourceRuntime ) you connect to the Managed Server with WLST, serverRuntime(), then you cd to the MBean and you do "cmo", this will tell you the ObjectName. The attribute can be discovered wish "ls".
a) [domain name]->[Configuration][General]->[Advanced] [X] Platform MBean Server Enabled [X] Platform MBean Server Used b) [domain name]->[Security][General] [X] Anonymous Admin Lookup Enabled
make sure each server listens on a different jmx port:
vi /opt/oracle/domains/osbpl1do/bin/setDomainEnv.sh
if [ "${SERVER_NAME}" = "osbpl1ms1" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder" fi if [ "${SERVER_NAME}" = "osbpl1as" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8889 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder" fi
restart your servers
To monitor a DataSource Active Connections:
vi myds.json:
{ "servers" : [ { "port" : "25006", "host" : "myhost.acme.com", "queries" : [ { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter", "settings" : { } } ], "obj" : "com.bea:ServerRuntime=acme-server-1,Name=acme-import.PickupPointDS,Type=JDBCDataSourceRuntime", "attr" : [ "ActiveConnectionsCurrentCount" ] }, { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter", "settings" : { } } ], "obj" : "java.lang:name=CMS Old Gen,type=MemoryPool", "attr" : [ "Usage" ] }, { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter", "settings" : { } } ], "obj" : "java.lang:name=ConcurrentMarkSweep,type=GarbageCollector", "attr" : [ "LastGcInfo" ] } ], "numQueryThreads" : 2 } ] }
./jmxtrans.sh start myds.json
you should get this
Result [attributeName=ActiveConnectionsCurrentCount, className=weblogic.jdbc.common.internal.DataSourceRuntimeMBeanImpl, typeName=Name=acme-import.PickupPointDS,ServerRuntime=acme-server-1,Type=JDBCDataSourceRuntime, values={ActiveConnectionsCurrentCount=0}, epoch=1385119401592]
To find the ObjectName (like: com.bea:ServerRuntime=acme-server-1,Name=acme-import.PickupPointDS,Type=JDBCDataSourceRuntime ) you connect to the Managed Server with WLST, serverRuntime(), then you cd to the MBean and you do "cmo", this will tell you the ObjectName. The attribute can be discovered wish "ls".
Labels:
JMX
Thursday, November 21, 2013
Exception in HttpInboundMessageContext.close: java.net.SocketException: Socket closed
Apparently under VERY heavy load we get this error in a HTTP Business Service... still under investigation.
It's not using a nio muxer, so I don't this that the Patch 9552622 described in java.io.IOException: Broken Pipe Seen Frequently in WebLogic Server Logs (Doc ID 1476825.1) really applies...
It's not using a nio muxer, so I don't this that the Patch 9552622 described in java.io.IOException: Broken Pipe Seen Frequently in WebLogic Server Logs (Doc ID 1476825.1) really applies...
####<Nov 20, 2013 9:10:28 PM CET> <Error> <WliSbTransports> <myhost> <osbpr1ms1> <[ACTIVE] ExecuteThread: '100' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <4cea82998b9a2c15:7ce38336:1427138d527:-8000-00000000000af294> <1384978228423> <BEA-381304> <Exception in HttpInboundMessageContext.close: java.net.SocketException: Socket closed java.net.SocketException: Socket closed at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:568) at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:539) at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:427) at weblogic.servlet.internal.CharsetChunkOutput.flush(CharsetChunkOutput.java:298) at weblogic.servlet.internal.ChunkOutput$2.checkForFlush(ChunkOutput.java:648) at weblogic.servlet.internal.CharsetChunkOutput.write(CharsetChunkOutput.java:200) at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:148) at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:148) at org.apache.xmlbeans.impl.store.Cursor._save(Cursor.java:590) at org.apache.xmlbeans.impl.store.Cursor.save(Cursor.java:2537) at org.apache.xmlbeans.impl.values.XmlObjectBase.save(XmlObjectBase.java:223) at com.bea.wli.sb.sources.XmlObjectSource.writeTo(XmlObjectSource.java:92) at com.bea.wli.sb.sources.OutboundXOPSource.writeTo(OutboundXOPSource.java:116) at com.bea.wli.sb.transports.http.HttpInboundMessageContext.close(HttpInboundMessageContext.java:264) at sun.reflect.GeneratedMethodAccessor882.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.wli.sb.transports.Util$4.invoke(Util.java:351) at $Proxy165.close(Unknown Source) at com.bea.wli.sb.pipeline.MessageProcessor.finishProcessing(MessageProcessor.java:398) at com.bea.wli.sb.pipeline.RouterCallback.onReceiveResponse(RouterCallback.java:108) at com.bea.wli.sb.pipeline.RouterCallback.run(RouterCallback.java:183) at weblogic.work.ContextWrap.run(ContextWrap.java:41) at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Labels:
weblogic
Wednesday, November 20, 2013
mv cannot move Directory not empty
if this command fails:
mv fromdir/* todir/
then try:
rsync -avf fromdir/* todir/
followed by
rm -rf fromdir
mv fromdir/* todir/
then try:
rsync -avf fromdir/* todir/
followed by
rm -rf fromdir
Tuesday, November 19, 2013
whoami vs who am i
ok this is like Linux 101:
So if you allow some user to sudo a command, and you want to log who that user is, you should use "who am i" and not "whoami".
[root@osb-vagrant ~]# who am i root pts/1 2013-11-19 11:01 (10.0.2.2) [root@osb-vagrant ~]# whoami root [root@osb-vagrant ~]# sudo -u soa whoami soa [root@osb-vagrant ~]# sudo -u soa who am i root pts/1 2013-11-19 11:01 (10.0.2.2)
So if you allow some user to sudo a command, and you want to log who that user is, you should use "who am i" and not "whoami".
Labels:
linux
Monday, November 18, 2013
Maven hell as usual: No connector available ...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project AcmeScripts: Failed to deploy artifacts/metadata: No connector available to access repository acme-repository (${acme.deploy.url}) of type default using the available factories WagonRepositoryConnectorFactory -> [Help 1]
Never seen this wagon anywhere.
In reality the issue was that in my pom.xml I had:
<version>1.0</version>
instead of
<version>1.0-SNAPSHOT</version>
Maven is an incredible piece of shit and I am more and more persuaded of it every time I use it.
Never seen this wagon anywhere.
In reality the issue was that in my pom.xml I had:
<version>1.0</version>
instead of
<version>1.0-SNAPSHOT</version>
Maven is an incredible piece of shit and I am more and more persuaded of it every time I use it.
Labels:
maven
Installing WebLogic: no space left on device
if you run the generic installer, be aware that it will unzip a load of stuff in the /tmp directory.
You might get a "no space left on device".
Run "df -m" to check how much space you have on /tmp... I guess it should be some 1.5 G at least.
If you can't increase /tmp, the workaround is to specify a tmpdir:
java -Djava.io.tmpdir=/vagrant -jar /opt/oracle/software/wls1035_generic.jar -mode=silent -silent_xml=/opt/oracle/bin/software/silent_${SOA_USER}.xml
You might get a "no space left on device".
Run "df -m" to check how much space you have on /tmp... I guess it should be some 1.5 G at least.
If you can't increase /tmp, the workaround is to specify a tmpdir:
java -Djava.io.tmpdir=/vagrant -jar /opt/oracle/software/wls1035_generic.jar -mode=silent -silent_xml=/opt/oracle/bin/software/silent_${SOA_USER}.xml
Labels:
weblogic
Sunday, November 17, 2013
WLST reading a property file
thepropertyfile is a regular property file:
This function handles also the case where a value contains a = sign
to get the value, do properties.get('bla')
bla=value1 mumble=value2=3
This function handles also the case where a value contains a = sign
def getProperties(thepropertyfile): properties = dict() for line in open(thepropertyfile): strippedline = line.strip() if "=" in strippedline: key,value = line.strip().split('=', 1) properties[key] = value return properties
to get the value, do properties.get('bla')
Labels:
WLST
Friday, November 15, 2013
Thread Deadlock on OSB today
Strange, I have never seen this before... maybe it's because 2 people with the same userid were using the console at the same time.
*************************************************************************************** <Nov 15, 2013 12:30:33 PM CET> <Critical> <WebLogicServer> <BEA-000394> < DEADLOCK DETECTED: ================== [deadlocked thread] [ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)': -------------------------------------------------------------------------------------------------- Thread '[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'' is waiting to acquire lock 'com.bea.wli.config.component.impl.ReferenceMap@4d86f1a3' that is held by thread '[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'' Stack trace: ------------ com.bea.wli.config.component.impl.ReferenceMap.getAncestorsOrDescendents(ReferenceMap.java:820) com.bea.wli.sb.transports.TransportDependencyUtils.computeExternalRefs(TransportDependencyUtils.java:97) com.bea.wli.sb.transports.TransportDependencyUtils.completeResourcesDependencies(TransportDependencyUtils.java:409) com.bea.wli.sb.transports.ResourceLifecycleListenerImpl.changesCommitted(ResourceLifecycleListenerImpl.java:158) com.bea.wli.sb.transports.TransportManagerImpl.changesCommitted(TransportManagerImpl.java:1205) com.bea.wli.sb.service.ServiceChangeListener.changesCommitted(ServiceChangeListener.java:146) com.bea.wli.config.impl.ResourceListenerNotifier.afterEnd(ResourceListenerNotifier.java:120) com.bea.wli.config.transaction.TransactionListenerWrapper.afterEnd(TransactionListenerWrapper.java:90) com.bea.wli.config.transaction.TransactionManager.notifyAfterEnd(TransactionManager.java:1154) com.bea.wli.config.transaction.TransactionManager.commit(TransactionManager.java:1519) com.bea.wli.config.transaction.TransactionManager._endTransaction(TransactionManager.java:842) com.bea.wli.config.transaction.TransactionManager.endTransaction(TransactionManager.java:783) com.bea.wli.config.deployment.server.ServerDeploymentReceiver$2.run(ServerDeploymentReceiver.java:275) weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) com.bea.wli.config.deployment.server.ServerDeploymentReceiver.commit(ServerDeploymentReceiver.java:260) weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195) weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13) weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68) weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528) weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) weblogic.work.ExecuteThread.run(ExecuteThread.java:178) [deadlocked thread] [ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)': -------------------------------------------------------------------------------------------------- Thread '[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'' is waiting to acquire lock 'com.bea.wli.config.transaction.TransactionManager@56622c18' that is held by thread '[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'' Stack trace: ------------ com.bea.wli.config.transaction.TransactionManager.enlistAsRead(TransactionManager.java:972) com.bea.wli.config.transaction.CopyOnWriteTransactionalOwner.getState(CopyOnWriteTransactionalOwner.java:65) com.bea.wli.config.transaction.TransactionalSet$1.access(TransactionalSet.java:80) com.bea.wli.config.transaction.TransactionalSet$1.access(TransactionalSet.java:78) com.bea.wli.config.transaction.CopyOnWriteAccessor.access(CopyOnWriteAccessor.java:50) com.bea.wli.config.transaction.CopyOnWriteAccessors$CopyOnWriteIterator.<init>(CopyOnWriteAccessors.java:47) com.bea.wli.config.transaction.TransactionalSet$1.<init>(TransactionalSet.java:78) com.bea.wli.config.transaction.TransactionalSet.iterator(TransactionalSet.java:78) com.bea.wli.config.component.impl.ReferenceMap.getNumDependents(ReferenceMap.java:731) com.bea.wli.config.task.impl.GetMetadataTask.getMetadata(GetMetadataTask.java:113) com.bea.wli.config.task.impl.GetMetadataTask._execute(GetMetadataTask.java:87) com.bea.wli.config.task.impl.GetMetadataTask._execute(GetMetadataTask.java:41) com.bea.wli.config.task.impl.SessionedTask$1.execute(SessionedTask.java:233) com.bea.wli.config.transaction.TransactionalTask._doExecute(TransactionalTask.java:217) com.bea.wli.config.transaction.TransactionalTask._doExecuteWithRetry(TransactionalTask.java:162) com.bea.wli.config.transaction.TransactionalTask.doExecute(TransactionalTask.java:142) com.bea.wli.config.task.impl.SessionedTask.doExecute(SessionedTask.java:236) com.bea.wli.config.task.impl.SessionedTask.doExecute(SessionedTask.java:191) com.bea.wli.config.task.impl.GetMetadataTask.getMetadata(GetMetadataTask.java:67) com.bea.wli.config.mbeans.Config.getMetadata(Config.java:206) com.bea.wli.config.mbeans.Config.getMetadata(Config.java:201) sun.reflect.GeneratedMethodAccessor614.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.bea.alsb.console.support.ConsoleSideMBeanInvocationHandler.__invoke(ConsoleSideMBeanInvocationHandler.java:113) com.bea.alsb.console.support.ConsoleSideMBeanInvocationHandler.invoke(ConsoleSideMBeanInvocationHandler.java:71) $Proxy158.getMetadata(Unknown Source) com.bea.alsb.console.projects.ProjectsHelper.getFoldersMetadata(ProjectsHelper.java:255) com.bea.alsb.console.projects.ProjectsHelper.getSortedFoldersMetadata(ProjectsHelper.java:237) jsp_servlet._jsp._projects.__projectstree$1ProjectsTree.getFolders(__projectstree.java:201) jsp_servlet._jsp._projects.__projectstree$1ProjectsTree.getFolders(__projectstree.java:217) jsp_servlet._jsp._projects.__projectstree$1ProjectsTree.getProjectsTreeNodes(__projectstree.java:188) jsp_servlet._jsp._projects.__projectstree._jspService(__projectstree.java:248) weblogic.servlet.jsp.JspBase.service(JspBase.java:34) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) org.apache.beehive.netui.pageflow.PageFlowPageFilter.continueChainNoWrapper(PageFlowPageFilter.java:455) org.apache.beehive.netui.pageflow.PageFlowPageFilter.runPage(PageFlowPageFilter.java:432) org.apache.beehive.netui.pageflow.PageFlowPageFilter.doFilter(PageFlowPageFilter.java:284) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524) weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444) org.apache.beehive.netui.pageflow.scoping.internal.ScopedRequestDispatcher.include(ScopedRequestDispatcher.java:119) com.bea.netuix.servlets.controls.content.JspContent.beginRender(JspContent.java:552) com.bea.netuix.servlets.controls.content.NetuiContent.beginRender(NetuiContent.java:365) com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:485) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:220) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:352) com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:326) com.bea.netuix.nf.UIControl.render(UIControl.java:582) com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:486) com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:146) com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:62) jsp_servlet._framework._skeletons._wliconsole.__flowlayout._jspService(__flowlayout.java:271) weblogic.servlet.jsp.JspBase.service(JspBase.java:34) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183) weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:526) weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444) com.bea.netuix.servlets.controls.application.laf.JspTools.renderJsp(JspTools.java:130) com.bea.netuix.servlets.controls.application.laf.JspControlRenderer.beginRender(JspControlRenderer.java:72) com.bea.netuix.servlets.controls.application.laf.PresentationControlRenderer.beginRender(PresentationControlRenderer.java:65) com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:481) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:220) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:352) com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:326) com.bea.netuix.nf.UIControl.render(UIControl.java:582) com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:486) com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:146) com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:62) jsp_servlet._framework._skeletons._wliconsole.__gridlayout._jspService(__gridlayout.java:312) weblogic.servlet.jsp.JspBase.service(JspBase.java:34) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183) weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:526) weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444) com.bea.netuix.servlets.controls.application.laf.JspTools.renderJsp(JspTools.java:130) com.bea.netuix.servlets.controls.application.laf.JspControlRenderer.beginRender(JspControlRenderer.java:72) com.bea.netuix.servlets.controls.application.laf.PresentationControlRenderer.beginRender(PresentationControlRenderer.java:65) com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:481) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:220) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395) com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361) com.bea.netuix.nf.Lifecycle.runOutbound(Lifecycle.java:208) com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:162) com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:388) com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:258) com.bea.netuix.servlets.manager.UIServlet.doGet(UIServlet.java:211) com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:196) com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:251) javax.servlet.http.HttpServlet.service(HttpServlet.java:820) weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:130) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111) java.security.AccessController.doPrivileged(Native Method) oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94) oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161) oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) weblogic.work.ExecuteThread.run(ExecuteThread.java:178) > <Nov 15, 2013 12:30:34 PM CET> <Critical> <Health> <BEA-310006> <Critical Subsystem core has failed. Setting server state to FAILED. Reason: Thread deadlock detected> <Nov 15, 2013 12:30:34 PM CET> <Critical> <WebLogicServer> <BEA-000385> <Server health failed. Reason: health of critical service 'core' failed>
Labels:
OSB
Tuesday, November 12, 2013
Bing, one more reason to hate Microsoft (just in case you didn't have already several millions)
Tonight I carelessly run a "Windows Update install all" and, much with my dismay, I found it installed Bing Desktop, it messed with my desktop background, with my Firefox settings (gmail opened each mail in a new windows) and god knows what else.
I tried to uninstall Bing Desktop and it said another installation was going on (???) ... so I had to restart, uninstall Bing desktop, restart again.... finally all seems ok.
If Microsoft has to use these VIRAL way of promoting their products, to me it seems like those door-to-door salesmen who put a foot across your door to prevent you from shutting the door on their face.
Pathetic.Microsoftic.
I tried to uninstall Bing Desktop and it said another installation was going on (???) ... so I had to restart, uninstall Bing desktop, restart again.... finally all seems ok.
If Microsoft has to use these VIRAL way of promoting their products, to me it seems like those door-to-door salesmen who put a foot across your door to prevent you from shutting the door on their face.
Pathetic.Microsoftic.
Puppet instant weblogic installation module in 30 seconds
define weblogic($user = 'soa') { $optpath = '/opt' $nmPort = '5556' $oracle_home = "${optpath}/oracle" $user_home = '/home/' $bea_home = "${oracle_home}/fmw11_1_1_5" $java_home = "/${optpath}/oracle/java" $java_home_target = '/usr/lib/jvm/jre-1.6.0-sun.x86_64/bin/java' $software_home = '/opt/oracle/software' group { 'soa' : ensure => 'present', } user { 'soa': ensure => 'present', gid => 'soa', home => "/${user_home}/soa", password => 'changeme', managehome => true, } # create /home/soa?/.bashrc file { "/${user_home}/${user}/.bashrc": ensure => present, content => template('weblogic/bashrc.erb'), require => User["${user}"], owner => "${user}", } file { "${optpath}": ensure => 'directory', owner => 'root', group => 'root', mode => '0755' } file { ["${software_home}"]: ensure => 'directory', owner => 'soa', require => User['soa'], } file { "${java_home}": ensure => link, target => "${java_home_target}" } file { ["${oracle_home}", "${bea_home}"]: ensure => 'directory', owner => "${user}", require => User["${user}"], } file { ["${optpath}/var/", "${optpath}/var/log/", "${optpath}/var/log/weblogic/", "${optpath}/var/log/weblogic/server", "${optpath}/var/log/weblogic/nodemanager", "${optpath}/var/log/weblogic/scripts"]: ensure => directory, owner => $user, require => User[$user], } # download WebLogic jars file { 'wls1035_generic.jar': ensure => present, source => 'puppet:///modules/weblogic/wls1035_generic.jar', target => "${software_home}/wls1035_generic.jar", } file { "${software_home}/silent_${user}.xml": ensure => present, content => template('weblogic/silent.xml.erb'), require => File["${oracle_home}"] } # execute silent installation exec { 'weblo-silent-install': command => "java -d64 -jar wls1035_generic.jar -mode=silent -silent_xml=silent_${user}.xml", cwd => "${software_home}", path => '/usr/bin:/bin', creates => "${bea_home}/registry.xml", require => [Nexus::Download['wls1035_generic.jar'], File["${software_home}/silent_${user}.xml"], ], } }
all you need to do is to provide a silent.xml.erb and a bashrc.erb in the templates folder, plus the wls1035_generic.jar file in the files folder of the same weblogic module.
It might not be elegant but it's really simple and it works.
Calling an Oracle Stored Procedure in Java or in Python
I needed to schedule the execution of a Stored Procedure from a cron job.... somebody advised me to use a Java class to do that.
It proved to be really cumbersome... I have followed this example and it's working, but it's very verbose and ugly.
Also, in Java there is no built-in support for getopt style of reading CLI parameters, and using the gnu getopt library seemed overkill to me.
So at the end I will keep using good old zxJDBC from a Python (WLST) script, which supports stored procedures in a VERY simple way: http://www.jython.org/archive/21/docs/zxjdbc.html
The only disturbing thing is that the startup time for WLST is a bit long, much longer than for a JVM.... but who cares, really, for a job who has to be called once every 10 minutes...
It proved to be really cumbersome... I have followed this example and it's working, but it's very verbose and ugly.
Also, in Java there is no built-in support for getopt style of reading CLI parameters, and using the gnu getopt library seemed overkill to me.
So at the end I will keep using good old zxJDBC from a Python (WLST) script, which supports stored procedures in a VERY simple way: http://www.jython.org/archive/21/docs/zxjdbc.html
db = zxJDBC.connect(...) c = db.cursor() params = [None] c.callproc("funcout", params)
The only disturbing thing is that the startup time for WLST is a bit long, much longer than for a JVM.... but who cares, really, for a job who has to be called once every 10 minutes...
Friday, November 8, 2013
tar gzip exclude folder
Rule n.1:
never run tar inside the same folder you are tarring: tar will include the tar-file that it's creating... CRAZY!
Rule n. 2:
--exclude works only if it's the first parameter after tar... IN SOME versions of tar ONLY.... CRAZY!
in my version it has to come last.
cd /opt/oracle/backups
tar cvzf osbpr1dobackup11Nov2013_108.tar.gz /opt/oracle/domains/osbpr1do/ --exclude="shared/store/jms"
Rule n. 3:
if the exclude folder ends in /, tar will ignore it without warning.... CRAZY!
Rule n. 4:
The exclude parameter shoule be relative to the -C path:
this is good:
tar cvzf /opt/oracle/backups/deleteme.tar.gz -C /opt/oracle/bin/ . --exclude="src"
this is bad:
tar cvzf /opt/oracle/backups/deleteme.tar.gz -C /opt/oracle/bin/ . --exclude="/opt/oracle/bin/src"
That's why I never use tar but rather jar.
never run tar inside the same folder you are tarring: tar will include the tar-file that it's creating... CRAZY!
Rule n. 2:
--exclude works only if it's the first parameter after tar... IN SOME versions of tar ONLY.... CRAZY!
in my version it has to come last.
cd /opt/oracle/backups
tar cvzf osbpr1dobackup11Nov2013_108.tar.gz /opt/oracle/domains/osbpr1do/ --exclude="shared/store/jms"
Rule n. 3:
if the exclude folder ends in /, tar will ignore it without warning.... CRAZY!
Rule n. 4:
The exclude parameter shoule be relative to the -C path:
this is good:
tar cvzf /opt/oracle/backups/deleteme.tar.gz -C /opt/oracle/bin/ . --exclude="src"
this is bad:
tar cvzf /opt/oracle/backups/deleteme.tar.gz -C /opt/oracle/bin/ . --exclude="/opt/oracle/bin/src"
That's why I never use tar but rather jar.
Labels:
tar
Thursday, November 7, 2013
Book: Anatomy of Fascism, by Paxton
Those soul who have been mesmerized by the likes of Orwell's "1984" or Huxley's "Brave New World", will appreciate the unrelenting rationalism by which Paxton dissect the phenomenon of Fascism, delving deep in the social and financial root causes of Europe's plunge into dictatorship.
While the World is plunging into a global form of Fiscal Fascism, where Corporations replace States and exert a totalitarian control on their subjects - with the ultimate goal of sucking all their riches - it helps to indulge in a retrospective analysis which entitles us to call these modern times a modern form of Fascism.
Labels:
books
Sunday, November 3, 2013
bash scripts organized with rerun
A small "rerun tutorial" or "getting started with rerun".
Rerun wiki: https://github.com/rerun/rerun/wiki
Download the rpm here
#remember to do export http_proxy=http://myuser:mypw@proxy.acme.com:8080
wget http://repository-stagrlee.forge.cloudbees.com/release/rpms/rerun/rerun-1.0.2-1.fc17.noarch.rpm
rpm -i rerun-1.0.2-1.fc17.noarch.rpm
rerun Available modules in "/usr/lib/rerun/modules":
stubbs: "Simple rerun module builder" - 1.0.2
then I download https://github.com/downloads/rerun-modules/rerun-modules/rerun-modules-repo-1.0-21.noarch.rpm, copy it locally (wget doesn't work with https on github, no clue...)
and I do:
rpm -i rerun-modules-repo-1.0-21.noarch.rpm
this one didn't work for me (connectivity problems) but it's not essential:
yum -y --disablerepo '*' --enablerepo 'rerun-modules' install '*'
I create my first module
rerun stubbs: add-module
Module name:
pippo
Module description:
my first rerun
Created module structure: /usr/lib/rerun/modules/pippo.
If you look in /usr/lib/rerun/modules/pippo, there is a lib folder - containing an empty functions.sh - and a command folder.
rerun stubbs:add-command
rerun stubbs:add-option
vi /usr/lib/rerun/modules/pippo/commands/hello/script
and after this text:
I enter this: echo name is $NAME
I run it:
rerun pippo:hello --name Luigi
name is Luigi
and rerun it:
rerun pippo:hello
name is Pierre
Ok at least we have proven that it can can be made to work...
Rerun wiki: https://github.com/rerun/rerun/wiki
Download the rpm here
#remember to do export http_proxy=http://myuser:mypw@proxy.acme.com:8080
wget http://repository-stagrlee.forge.cloudbees.com/release/rpms/rerun/rerun-1.0.2-1.fc17.noarch.rpm
rpm -i rerun-1.0.2-1.fc17.noarch.rpm
rerun Available modules in "/usr/lib/rerun/modules":
stubbs: "Simple rerun module builder" - 1.0.2
then I download https://github.com/downloads/rerun-modules/rerun-modules/rerun-modules-repo-1.0-21.noarch.rpm, copy it locally (wget doesn't work with https on github, no clue...)
and I do:
rpm -i rerun-modules-repo-1.0-21.noarch.rpm
this one didn't work for me (connectivity problems) but it's not essential:
yum -y --disablerepo '*' --enablerepo 'rerun-modules' install '*'
I create my first module
rerun stubbs: add-module
Module name:
pippo
Module description:
my first rerun
Created module structure: /usr/lib/rerun/modules/pippo.
If you look in /usr/lib/rerun/modules/pippo, there is a lib folder - containing an empty functions.sh - and a command folder.
rerun stubbs:add-command
Module: 1) pippo 2) stubbs #? 1 You picked module pippo (1) Command: hello Description: say hello Wrote command script: /usr/lib/rerun/modules/pippo/commands/hello/script Wrote test script: /usr/lib/rerun/modules/pippo/tests/hello-1-test.shthen I add an option to the command:
rerun stubbs:add-option
Module: 1) pippo 2) stubbs #? 1 You picked module pippo (1) Command: 1) hello #? 1 You picked command hello (1) Option: name Description: the person to greet Required: 1) true 2) false #? 1 Export: 1) true 2) false #? 1 Default: Pierre Wrote option metadata: /usr/lib/rerun/modules/pippo/options/name/metadata Updated command metadata: /usr/lib/rerun/modules/pippo/commands/hello/metadata Updated command script header: /usr/lib/rerun/modules/pippo/commands/hello/script
vi /usr/lib/rerun/modules/pippo/commands/hello/script
and after this text:
# - - - # Put the command implementation here. # - - -
I enter this: echo name is $NAME
I run it:
rerun pippo:hello --name Luigi
name is Luigi
and rerun it:
rerun pippo:hello
name is Pierre
Ok at least we have proven that it can can be made to work...
Saturday, November 2, 2013
git clone failing with Failed connect to github.com:443
On my RHEL box I tried:
git clone https://github.com/graphite-project/graphite-web.git
I tried then
export http_proxy=http://myuser:mypassword@myproxy:8080
and again
git clone https://github.com/graphite-project/graphite-web.git
finally I did:
git config --global http.proxy http://myuser:mypassword@myproxy:8080
git clone https://github.com/graphite-project/graphite-web.git and I got the magic
If you expected such a widely used product like git to give you some hint on how to troubleshoot such a common issue, you are expecting in vain, git is for geeks and geeks are not user friendly.
git clone https://github.com/graphite-project/graphite-web.git
Initialized empty Git repository in /home/vagrant/graphite-web/.git/and it was hanging and finally giving HTTP timeout error.
I tried then
export http_proxy=http://myuser:mypassword@myproxy:8080
and again
git clone https://github.com/graphite-project/graphite-web.git
Initialized empty Git repository in /home/vagrant/graphite-web/.git/ error: Failed connect to github.com:443; Operation now in progress while accessing https://github.com/graphite-project/graphite-web.git/info/refs fatal: HTTP request failed
finally I did:
git config --global http.proxy http://myuser:mypassword@myproxy:8080
git clone https://github.com/graphite-project/graphite-web.git and I got the magic
Initialized empty Git repository in /home/vagrant/graphite-web/.git/ remote: Counting objects: 13933, done. remote: Compressing objects: 100% (5434/5434), done. remote: Total 13933 (delta 9025), reused 13065 (delta 8316) Receiving objects: 100% (13933/13933), 17.15 MiB | 527 KiB/s, done. Resolving deltas: 100% (9025/9025), done.
If you expected such a widely used product like git to give you some hint on how to troubleshoot such a common issue, you are expecting in vain, git is for geeks and geeks are not user friendly.
Labels:
git
OSB: WLST to enable monitoring on Proxy Services
If there is something boring is having to manually enable/disable monitoring at Pipeline/STage/Action level on Proxy/Business services, with same or different aggregation interval.
Unfortunately OSB configuration API is not very friendly. ProxyServiceConfigurationMBean inherits the method enableMonitoring from its parent class CommonServiceConfigurationMBean.
Unfortunately in the method signature there is no mention of the extra parameters : level and aggregation period.
Here is the code:
Unfortunately OSB configuration API is not very friendly. ProxyServiceConfigurationMBean inherits the method enableMonitoring from its parent class CommonServiceConfigurationMBean.
Unfortunately in the method signature there is no mention of the extra parameters : level and aggregation period.
Here is the code:
#There is a change to do to be able to run this WLST script: #vi /opt/oracle/fmw11_1_1_5/osb/common/bin/wlst.sh #change this: #export CLASSPATH #into this: #CLASSPATH=/opt/oracle/fmw11_1_1_5/osb/lib/sb-kernel-api.jar:/opt/oracle/fmw11_1_1_5/osb/lib/sb-kernel-impl.jar:/opt/oracle/fmw11_1_1_5/osb/modules/com.bea.common.configfwk_1.5.0.0.jar:$CLASSPATH #export CLASSPATH import javax.management import java.util import javax.management.remote import javax.naming import weblogic.management.mbeanservers.domainruntime import com.bea.wli.sb.management.configuration from java.util import Hashtable from java.util import HashSet from javax.management.remote import JMXServiceURL from weblogic.management.mbeanservers.domainruntime import DomainRuntimeServiceMBean from javax.naming import Context from javax.management.remote import JMXConnectorFactory from javax.management import ObjectName from com.bea.wli.sb.management.configuration import SessionManagementMBean from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean from com.bea.wli.sb.management.configuration import CommonServiceConfigurationMBean import weblogic.management.jmx.MBeanServerInvocationHandler from com.bea.wli.config import Ref from com.bea.wli.config.env import EnvValueQuery from com.bea.wli.config.env import QualifiedEnvValue from com.bea.wli.config.resource import DependencyQuery from com.bea.wli.sb.management.query import ProxyServiceQuery from com.bea.wli.sb.management.query import BusinessServiceQuery from com.bea.wli.sb.util import EnvValueTypes from java.util import Collection from java.util import Collections def setMonitoringAllProjectsAndServices(isEnabled): refs = configMBean.getRefs(Ref.DOMAIN) refsList = ArrayList() refsList.addAll(refs) for ref in refsList : if ref.getTypeId() == "ProxyService" or ref.getTypeId() == "BusinessService" : if ref.getTypeId() == "ProxyService" : isPS = "1" else: isPS = "0" if isEnabled: print "enabling monitoring for ", ref.getFullName() proxyServiceConfigurationMBean.enableMonitoring(ref) else: print "disabling monitoring for ", ref.getFullName() proxyServiceConfigurationMBean.disableMonitoring(ref) sessionName = "Session to enable or disable monitoring" hostname='myhost.acme.com' port=9001 username='Pierluigi' password='pippo' serviceURL=JMXServiceURL("t3", hostname, port, "/jndi/" + DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME) h=Hashtable() h.put(Context.SECURITY_PRINCIPAL, username) h.put(Context.SECURITY_CREDENTIALS, password) h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote") conn = JMXConnectorFactory.connect(serviceURL, h) mbconn = conn.getMBeanServerConnection() sm = JMX.newMBeanProxy(mbconn, ObjectName.getInstance(SessionManagementMBean.OBJECT_NAME), SessionManagementMBean) sm.createSession(sessionName) configMBean = JMX.newMBeanProxy(mbconn, ObjectName.getInstance("com.bea:Name=" + ALSBConfigurationMBean.NAME + "." + sessionName + ",Type=" + ALSBConfigurationMBean.TYPE), ALSBConfigurationMBean) domainService = weblogic.management.jmx.MBeanServerInvocationHandler.newProxyInstance(mbconn, ObjectName(DomainRuntimeServiceMBean.OBJECT_NAME), DomainRuntimeServiceMBean, false) proxyServiceConfigurationMBean = domainService.findService(String("ProxyServiceConfiguration.").concat(sessionName),'com.bea.wli.sb.management.configuration.ProxyServiceConfigurationMBean', None) setMonitoringAllProjectsAndServices(true) sm.activateSession(sessionName, "Complete enable/disable service monitoring") conn.close()
Labels:
monitoring,
OSB
yum fails installing git on RHEL: There was an error communicating with RHN
yum install git-core
and nothing seems wrong.
Then I check in
cat /etc/sysconfig/rhn/up2date
I find some light here. But they don't say what the "default Red Hat Network URL" is... bloody hell...
If I comment out the serverURL I get:
Ok it looks like I need some good RH training...
Loaded plugins: product-id, rhnplugin, security There was an error communicating with RHN. RHN Satellite or RHN Classic support will be disabled. Error communicating with server. The message was: Name or service not known Setting up Install Process No package git-core available. Error: Nothing to doFirst I check in cat /etc/yum.conf
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
and nothing seems wrong.
Then I check in
cat /etc/sysconfig/rhn/up2date
# Automatically generated Red Hat Update Agent config file, do not edit. # Format: 1.0 tmpDir[comment]=Use this Directory to place the temporary transport files tmpDir=/tmp disallowConfChanges[comment]=Config options that can not be overwritten by a config update action disallowConfChanges=noReboot;sslCACert;useNoSSLForPackages;noSSLServerURL;serverURL;disallowConfChanges skipNetwork[comment]=Skips network information in hardware profile sync during registration. skipNetwork=0 stagingContent[comment]=Retrieve content of future actions in advance stagingContent=1 networkRetries[comment]=Number of attempts to make at network connections before giving up networkRetries=1 hostedWhitelist[comment]=RHN Hosted URL's hostedWhitelist= enableProxy[comment]=Use a HTTP Proxy enableProxy=0 writeChangesToLog[comment]=Log to /var/log/up2date which packages has been added and removed writeChangesToLog=0 serverURL[comment]=Remote server URL (use FQDN) serverURL=http://pluto.pippo.com/XMLRPC proxyPassword[comment]=The password to use for an authenticated proxy proxyPassword= stagingContentWindow[comment]=How much forward we should look for future actions. In hours. stagingContentWindow=24 proxyUser[comment]=The username for an authenticated proxy proxyUser= versionOverride[comment]=Override the automatically determined system version versionOverride= sslCACert[comment]=The CA cert used to verify the ssl server sslCACert=/usr/share/rhn/RHNS-CA-CERT retrieveOnly[comment]=Retrieve packages only retrieveOnly=0 debug[comment]=Whether or not debugging is enabled debug=0 httpProxy[comment]=HTTP proxy in host:port format, e.g. squid.redhat.com:3128 httpProxy= useNoSSLForPackages[comment]=Use the noSSLServerURL for package, package list, and header fetching (disable Akamai) useNoSSLForPackages=0 systemIdPath[comment]=Location of system id systemIdPath=/etc/sysconfig/rhn/systemid enableProxyAuth[comment]=To use an authenticated proxy or not enableProxyAuth=0 noReboot[comment]=Disable the reboot actions noReboot=0The "serverURL=http://pluto.pippo.com/XMLRPC" looks suspicious, since I am not in the pippo.com network...there must be some proxy issue here... but enableProxy is 0!!!
I find some light here. But they don't say what the "default Red Hat Network URL" is... bloody hell...
If I comment out the serverURL I get:
yum install git-core Loaded plugins: product-id, rhnplugin, security There was an error communicating with RHN. RHN Satellite or RHN Classic support will be disabled. Error Message: Please run rhn_register as root on this client Error Class Code: 9 Error Class Info: Invalid System Credentials. Explanation: An error has occurred while processing your request. If this problem persists please enter a bug report at bugzilla.redhat.com. If you choose to submit the bug report, please be sure to include details of what you were trying to do when this error occurred and details on how to reproduce this problem.
Ok it looks like I need some good RH training...
Labels:
rhel
JMXTrans and Graphite: getting started
You can achieve very decent monitoring of a Java application - including the JVM itself - with jmxtrans and graphite .
No more horrible hand-crafted tool to extract and chart JMS data.
A TRANS in Italian is a transexual, typically Brazilian - more knows as VIADOS - so hearing JMXTrans always puts me in a good mood because Italians like to make jokes about sex.
OK, let's be serious.
First read the excellent jmxtrans Wiki here.
As suggested by jmstrans site, I listened to the presentation by Coda Hale but frankly it didn't say much new, he speaks well but not very informative
Getting started:
download the tar.gz here
I will download a rpm from here (instructions on the site are incomplete... not good...)
rpm -i jmxtrans-20121016.145842.6a28c97fbb-0.noarch.rpm
I verify the installation parameters:
less /etc/sysconfig/jmxtrans
I look into an example.json
(I still need to decide if I hate more JSON or XML... they both hurt the eye...)
I write a sample Java class to monitor:
vi Sample.java
javac Sample.java
java -Dcom.sun.management.jmxremote.port=1105 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Sample
cp example.json sample.json
I edit port number and host to match 1105 and my localhost
./jmxtrans.sh start sample.json
this runs in background :
ps -ef | grep jmxtrans
root 2240 1 6 07:47 pts/1 00:00:15 /usr/bin/java -server -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djmxtrans.log.level=debug -Djmxtrans.log.dir=. -Xms512M -Xmx512M -XX:+UseConcMarkSweepGC -XX:NewRatio=8 -XX:NewSize=64m -XX:MaxNewSize=64m -XX:MaxTenuringThreshold=16 -XX:GCTimeRatio=9 -XX:PermSize=384m -XX:MaxPermSize=384m -XX:+UseTLAB -XX:CMSInitiatingOccupancyFraction=85 -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=1 -Dsun.rmi.dgc.server.gcInterval=28800000 -Dsun.rmi.dgc.client.gcInterval=28800000 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=2101 -jar jmxtrans-all.jar -e -f sample.json -s 60
and if I do
tail -f jmxtrans.log
I get a line per minute:
[02 Nov 2013 07:47:22] [main] 0 INFO (com.googlecode.jmxtrans.JmxTransformer:134) - Starting Jmxtrans on : sample.json
[02 Nov 2013 07:47:23] [main] 1125 DEBUG (com.googlecode.jmxtrans.JmxTransformer:354) - Loaded file: /usr/share/jmxtrans/sample.json
[02 Nov 2013 07:47:23] [main] 1154 DEBUG (com.googlecode.jmxtrans.JmxTransformer:429) - Scheduled job: osb-vagrant.acme.com:1105-1383374843215-0158449004 for server: Server [host=osb-vagrant.acme.com, port=1105, url=null, cronExpression=null, numQueryThreads=2]
[02 Nov 2013 07:47:23] [ServerScheduler_Worker-1] 1167 DEBUG (com.googlecode.jmxtrans.jobs.ServerJob:31) - +++++ Started server job: Server [host=osb-vagrant.acme.com, port=1105, url=null, cronExpression=null, numQueryThreads=2]
[02 Nov 2013 07:47:23] [ServerScheduler_Worker-1] 1690 DEBUG (com.googlecode.jmxtrans.util.JmxUtils:102) - ----- Creating 3 query threads
[02 Nov 2013 07:47:24] [pool-1-thread-1] 1940 DEBUG (com.googlecode.jmxtrans.util.JmxUtils:195) - Executing queryName: java.lang:type=Memory from query: Query [obj=java.lang:type=Memory, resultAlias=null, attr=[HeapMemoryUsage, NonHeapMemoryUsage]]
[02 Nov 2013 07:47:24] [pool-1-thread-1] 2002 DEBUG (com.googlecode.jmxtrans.util.JmxUtils:209) - Finished running outputWriters for query: Query [obj=java.lang:type=Memory, resultAlias=null, attr=[HeapMemoryUsage, NonHeapMemoryUsage]]
[02 Nov 2013 07:47:24] [ServerScheduler_Worker-1] 2006 DEBUG (com.googlecode.jmxtrans.jobs.ServerJob:50) - +++++ Finished server job: Server [host=osb-vagrant.acme.com, port=1105, url=service:jmx:rmi:///jndi/rmi://osb-vagrant.acme.com:1105/jmxrmi, cronExpression=null, numQueryThreads=2]
Next step: install grafite and plot these metrics....
No more horrible hand-crafted tool to extract and chart JMS data.
A TRANS in Italian is a transexual, typically Brazilian - more knows as VIADOS - so hearing JMXTrans always puts me in a good mood because Italians like to make jokes about sex.
OK, let's be serious.
First read the excellent jmxtrans Wiki here.
As suggested by jmstrans site, I listened to the presentation by Coda Hale but frankly it didn't say much new, he speaks well but not very informative
Getting started:
download the tar.gz here
tar xvzf jmxtrans-242.tar.gz cd jmxtrans-242/rpm .... mmm when I run build.sh it asks me a release and version?????
I will download a rpm from here (instructions on the site are incomplete... not good...)
rpm -i jmxtrans-20121016.145842.6a28c97fbb-0.noarch.rpm
I verify the installation parameters:
less /etc/sysconfig/jmxtrans
# configuration file for package jmxtrans export JAR_FILE="/usr/share/jmxtrans/jmxtrans-all.jar" export LOG_DIR="/var/log/jmxtrans" export SECONDS_BETWEEN_RUNS=60 export JSON_DIR="/var/lib/jmxtrans" export HEAP_SIZE=512 export NEW_SIZE=64 export CPU_CORES=2 export NEW_RATIO=8 export LOG_LEVEL=debug
cd /usr/share/jmxtrans ./jmxtrans.sh Usage: ./jmxtrans.sh {start|stop|restart|status} [filename.json]
I look into an example.json
{ "servers" : [ { "port" : "1099", "host" : "w2", "queries" : [ { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter", "settings" : { } } ], "obj" : "java.lang:type=Memory", "attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ] }, { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter", "settings" : { } } ], "obj" : "java.lang:name=CMS Old Gen,type=MemoryPool", "attr" : [ "Usage" ] }, { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter", "settings" : { } } ], "obj" : "java.lang:name=ConcurrentMarkSweep,type=GarbageCollector", "attr" : [ "LastGcInfo" ] } ], "numQueryThreads" : 2 } ] }
(I still need to decide if I hate more JSON or XML... they both hurt the eye...)
I write a sample Java class to monitor:
vi Sample.java
public class Sample { public static void main(String[] args) { try { Thread.sleep(100000000); } catch (Exception e) {}; } }
javac Sample.java
java -Dcom.sun.management.jmxremote.port=1105 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Sample
cp example.json sample.json
I edit port number and host to match 1105 and my localhost
./jmxtrans.sh start sample.json
this runs in background :
ps -ef | grep jmxtrans
root 2240 1 6 07:47 pts/1 00:00:15 /usr/bin/java -server -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djmxtrans.log.level=debug -Djmxtrans.log.dir=. -Xms512M -Xmx512M -XX:+UseConcMarkSweepGC -XX:NewRatio=8 -XX:NewSize=64m -XX:MaxNewSize=64m -XX:MaxTenuringThreshold=16 -XX:GCTimeRatio=9 -XX:PermSize=384m -XX:MaxPermSize=384m -XX:+UseTLAB -XX:CMSInitiatingOccupancyFraction=85 -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=1 -Dsun.rmi.dgc.server.gcInterval=28800000 -Dsun.rmi.dgc.client.gcInterval=28800000 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=2101 -jar jmxtrans-all.jar -e -f sample.json -s 60
and if I do
tail -f jmxtrans.log
I get a line per minute:
[02 Nov 2013 07:47:22] [main] 0 INFO (com.googlecode.jmxtrans.JmxTransformer:134) - Starting Jmxtrans on : sample.json
[02 Nov 2013 07:47:23] [main] 1125 DEBUG (com.googlecode.jmxtrans.JmxTransformer:354) - Loaded file: /usr/share/jmxtrans/sample.json
[02 Nov 2013 07:47:23] [main] 1154 DEBUG (com.googlecode.jmxtrans.JmxTransformer:429) - Scheduled job: osb-vagrant.acme.com:1105-1383374843215-0158449004 for server: Server [host=osb-vagrant.acme.com, port=1105, url=null, cronExpression=null, numQueryThreads=2]
[02 Nov 2013 07:47:23] [ServerScheduler_Worker-1] 1167 DEBUG (com.googlecode.jmxtrans.jobs.ServerJob:31) - +++++ Started server job: Server [host=osb-vagrant.acme.com, port=1105, url=null, cronExpression=null, numQueryThreads=2]
[02 Nov 2013 07:47:23] [ServerScheduler_Worker-1] 1690 DEBUG (com.googlecode.jmxtrans.util.JmxUtils:102) - ----- Creating 3 query threads
[02 Nov 2013 07:47:24] [pool-1-thread-1] 1940 DEBUG (com.googlecode.jmxtrans.util.JmxUtils:195) - Executing queryName: java.lang:type=Memory from query: Query [obj=java.lang:type=Memory, resultAlias=null, attr=[HeapMemoryUsage, NonHeapMemoryUsage]]
[02 Nov 2013 07:47:24] [pool-1-thread-1] 2002 DEBUG (com.googlecode.jmxtrans.util.JmxUtils:209) - Finished running outputWriters for query: Query [obj=java.lang:type=Memory, resultAlias=null, attr=[HeapMemoryUsage, NonHeapMemoryUsage]]
[02 Nov 2013 07:47:24] [ServerScheduler_Worker-1] 2006 DEBUG (com.googlecode.jmxtrans.jobs.ServerJob:50) - +++++ Finished server job: Server [host=osb-vagrant.acme.com, port=1105, url=service:jmx:rmi:///jndi/rmi://osb-vagrant.acme.com:1105/jmxrmi, cronExpression=null, numQueryThreads=2]
Next step: install grafite and plot these metrics....
Megalopolis - Shenzhen
A great documentary by RAI 3 on China's "miracle" city Shenzhen
Unfortunately there are no English captions...
the music seems taken from the Quatsi Trilogy and quotations from Neuromancer
Unfortunately there are no English captions...
the music seems taken from the Quatsi Trilogy and quotations from Neuromancer
Friday, November 1, 2013
wlst redirect
sometimes we don't want to clutter the stdout with the result of a ls():
http://docs.oracle.com/cd/E15051_01/wls/docs103/config_scripting/using_WLST.html#wp1094015
This works quite well:
redirect('/dev/null', 'false') allds=ls('/SystemResources/', returnMap='true') stopRedirect()
Labels:
WLST
Book: Hacking Linux Exposed
Once you skip the first 40 pages of usual publisher blablabla / what a waste of paper! / you will be impressed by the clarity and conciseness of the exposition. Bri Hatch is a first class technical writer. This book can be read also by beginners, because it guides you step by step without giving anything for granted.
Labels:
books
Subscribe to:
Posts (Atom)