Date Created: Fri 21-Jan-2011

Related Document Categories:

Get my WebSphere Application Server course here >> http://www.themiddlewareshop.com/products/


How to write Jython with the Application Server Toolkit 6.1


install & Launch the Toolkit



File >> New >> Other



Select Jython Project



We are going to create a project that deals with listing WebSphere Application Servers (WAS) servers



In the project explorer, right-mouse-click the ListServers project and select New >> Other >> Jython Script File



Call the file listServers.py




Creating a server

You can create a server to identify the runtime environment that you want to use for testing your project resources.
To create a server:

In the menu bar, click File >> New >> Other.

Expand the Server folder and then select Server.

Click Next. The New Server wizard opens. This wizard defines a new server, that contains information required to point to a specific runtime environment for local or remote testing, or for publishing to an application server.
In the Server's host name field, you can provide the fully qualified DNS name or IP address of the host machine that where the server is running. By default, this field is pre-filled with the default address: localhost

Click Finish. The new server appears in the Servers view under the Server column







I installed WebSphere 6.1 for Developers, but you could use a WAS 6.1 runtime that comes with RSA 7.x

So I am going to use this runtime







Finish as we do not yet have our project completed. You will see a new server profile listed in the server view





Administrative Console Command Assist - a new feature of the WebSphere administrative console that displays the wsadmin command that is equivalent to the action taken by the end user interacting with the console. The output from the Command Assist feature can be transferred directly to the Jython Editor, making development of Jython scripts based on console actions easy. The Command Assist output can also be saved in a plain text file for later use.

What I am going to do is now start the server and see if I can get his automatic transfer to a Jython editor.




If you double click on the tab the panel will go full screen





If you get the error

[09/11/08 13:32:22:718 GMT] 00000014 RoleBasedAuth A SECJ0305I: The role-based authorization check failed for admin-authz operation Server:getName. The user UNAUTHENTICATED (unique ID: unauthenticated) was not granted any of the following required roles: adminsecuritymanager, administrator, monitor, configurator, operator, deployer.
[09/11/08 13:32:27:171 GMT] 00000014 RoleBasedAuth E SECJ0306E: No received or invocation credential exist on the thread. The Role based authorization check will not have an accessId of the caller to check. The parameters are: access check method getName on resource Server and module Server. The stack trace is java.lang.Exception: Invocation and received credentials are both null
at com.ibm.ws.security.role.RoleBasedAuthorizerImpl.checkAccess(RoleBasedAuthorizerImpl.java:284)
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1910)
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1766)
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1694)
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1667)
at com.ibm.ws.management.AdminServiceImpl.getAttribute(AdminServiceImpl.java:661)
at com.ibm.ws.management.connector.AdminServiceDelegator.getAttribute(AdminServiceDelegator.java:99)
at com.ibm.ws.management.connector.rmi.RMIConnectorService.getAttribute(RMIConnectorService.java:126)
at com.ibm.ws.management.connector.rmi._RMIConnectorService_Tie.getAttribute(_RMIConnectorService_Tie.java:225)
at com.ibm.ws.management.connector.rmi._RMIConnectorService_Tie._invoke(_RMIConnectorService_Tie.java:100)
at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:613)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:466)
at com.ibm.rmi.iiop.ORB.process(ORB.java:503)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1552)
at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2673)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2551)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:62)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool

-------------------------

The solution is to first configure the Servers' profile in the ASTK ide. it means that this server has security enabled and the server cannot be started by the wizard as it does not yet know the administration username as password.

The reason why we are getting com.ibm.CORBA.iiop errors is that the default port being used by the IDE server profile is to use RMI so the IDE is trying to talk to the Server and authenticate over an RMI port.

-------------------------

Change the Server Connection Type to SOAP and also provide a username and password id global security is turned on. In My humble opinion this is a good idea. I often see so many articles on web sites that do not provide solutions and examples with security and in the real world this is what you will have to face in the enterprise playground.



Serve will start now.






We now have a running server what we will do now is an action in the administration console and bring the code across to our editor.


Right mouse click on the server to run the administration console








Sine Global security is enabled the console will automatically switch to the SSL port. you can open the URL in a browser.

https://localhost:9045/ibm/console/logon.jsp











Enable command assistance notifications
Specifies whether to send Java Management Extensions (JMX) notifications that contain command assistance data from the administrative console. Enablement of the notifications allows integration with product tools such as the WebSphere Application Server Toolkit (AST) Jython editor. Enablement of this option is recommended for non-production environments only.

------------------------------

When you do an action in the administration console it is saved in the WebSphere Administration Command view




By double clicking the command it will be inserted into the IDE. It is a bit basic and not all the commands are tracked.



-------------------------------


I then used this sample code form IBM to test the ASTK to run a Jython as an administration process.


print "getting apps..."
apps = AdminApp.list()
apps = apps.split(java.lang.System.getProperty('line.separator'))
print "contains apps:\n"
for app in apps:
print app
print "\nApps done.\n"

def displayServerInfo( wsadminNode):
wsadminSvr = AdminControl.queryNames("node="+wsadminNode+",type=Server,*")
print "svr="+wsadminSvr
wsadminServer = AdminControl.getAttribute(wsadminSvr,"name")
print "ServerName="+wsadminServer
print "wsadminMgmt="+AdminControl.getAttribute(wsadminSvr, "processType")
wsadminSvrId = AdminControl.getConfigId(wsadminSvr)
print "svrId="+wsadminSvrId
if(wsadminSvrId != 0):
print "wsadminServerType="+AdminConfig.showAttribute(wsadminSvrId, "serverType")
#endIf
wsadminState = AdminControl.getAttribute(wsadminSvr, "state")
return wsadminState
#endDef

wsadminNode = AdminControl.getNode()
print "NodeName="+wsadminNode

state = displayServerInfo(wsadminNode)
print "state="+state
print "\nDone.\n"
#










After loading all the jythn resources you will get this result


WASX7209I: Connected to process "server1" on node T60Node03 using SOAP connector; The type of process is: UnManagedProcess
getting apps...
contains apps:

DefaultApplication
IBMUTC
PlantsByWebSphere
SamplesGallery
ivtApp
query

Apps done.

NodeName=T60Node03
svr=WebSphere:name=server1,process=server1,platform=proxy,node=T60Node03,j2eeType=J2EEServer,version=6.1.0.0,type=Server,mbeanIdentifier=cells/T60Node03Cell/nodes/T60Node03/servers/server1/server.xml#Server_1226236168015,cell=T60Node03Cell,spec=1.0,processType=UnManagedProcess
ServerName=server1
wsadminMgmt=UnManagedProcess
svrId=server1(cells/T60Node03Cell/nodes/T60Node03/servers/server1|server.xml#Server_1226236168015)
wsadminServerType=APPLICATION_SERVER
state=STARTED

Done.

--------------------------

Well that is a basic tutorial on using the ASTK.

Get my WebSphere Application Server course here >> http://www.themiddlewareshop.com/products/

Steve Robinson - IBM Champion 2013

About Me

Steve Robinson has been working in IT for over 20 years and has provided solutions for many large-enterprise corporate companies across the world. Steve specialises in Java and Middleware.

In January 2013, I was awarded the prestigous 'IBM Champion' accolade.


  • Linked In
  • Twitter
  • About Me
  • My Blog
  • Contact Me

Read my books?

IBM WebSphere Application Server 8.0 Administration Guide

IBM WebSphere Application Server 8.0 Administration Guide

WebSphere Application Server 7.0 Administration Guide

WebSphere Application Server 7.0 Administration Guide

WebSphere Categories

Other Categories