使用 jython 部署时出现 NameNotFoundException

NameNotFoundException while deploying using jython

我在 IBM WAS 上通过 jython 脚本部署 EAR 文件,但在部署时出现错误,应用程序未启动。

错误代码:

     J2CA0052E: The lookup of the Activation Specification with JNDI Name jms/SampleQueueListener failed due to the following exception: javax.naming.NameNotFoundException: Context: cell01/nodes/dmgr11/servers/dmgr, name: jms/SampleQueueListener: First component in name jms/SampleQueueListener not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]

jms/SampleQueueListener 已经存在。我正在使用 WAS 8.5.5.8 并通过 Linux OS 上的 Jython 脚本部署应用程序,我也在使用节点代理和 dmgr。

python 部署应用的脚本:

def installapps():
try:
    print "********************************************************"
    print "Installing  Application in IBM WAS"
    print "********************************************************"
    print "\n Installing ear file -- %s " % eFile 
    AdminApp.install(eFile,["-usedefaultbindings", "-BindJndiForEJBMessageBinding",[["samplesystemservice.jar", "ServiceActivator", "sampleservices.jar,META-INF/ejb-jar.xml", "SampleQueueListener", "jms/SampleQueueListener", "jms/SampleJMSQueue"], ["sampleystemservices.jar", "BootstrapMessageBean", "samplesystemservices.jar,META-INF/ejb-jar.xml", "SampleTopicListener", "jms/SampleTopicListener", "jms/SampleJMSTopic"]]])
AdminConfig.save()
print "***************hello22***********"
AdminApp.install(wFile, ["-appname", wName, "-contextroot", ctxroot])
print "***************hello33**********"
    AdminConfig.save()
    print "Completed installing applications.\n"
    print "Saving configuration. This may take time, please wait...."
    print "********************************************************\n"
    print "********************************************************"
    print "Completed the installation of  Application in IBM WAS"
    print "********************************************************"
except:
    AdminControl.stopServer("server1", node)
print "Unable to install  Application"
print "********************************************************"
sys.exit(0)
try:
    print "********************************************************"
    print "Stop the WAS for post configuration of  Application"
    AdminControl.stopServer("server1", node)    
except:

您必须修复您的脚本。目前您正在将您的应用程序部署到 dmgr 服务器,请参阅上下文:

Context: cell01/nodes/dmgr11/servers/dmgr, name: jms/SampleQueueListener

dmgr服务器仅用于管理,不用于部署您自己的应用程序和资源。如果部署到 ND 环境,则需要提供 nodeName 和 serverName 或 clusterName。通常应用程序的服务器称为 server1。如果您没有任何服务器,您可能需要创建它。

我建议先使用 Web 管理控制台,直到您对拓扑和管理有更好的了解。

更新

您需要将模块映射到正确的服务器,请参阅 MapModulesToServers 选项,如下所示:

AdminApp.install('DefaultApplication.ear', ['-appname', 'TEST', '-MapModulesToServers', [['.*', 
 '.*', 'WebSphere:cell=myCell,node=myNode,server=myServer']]])

或者您可以使用库中提供的脚本,这可能更简单、更方便:

AdminApplication.installAppWithNodeAndServerOptions(appName, earFile,
 nodeName, serverName)

另请参阅: