使用 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)
另请参阅:
我在 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)
另请参阅: