我使用的是IBM Worklight环境。我使用Worklight Developer studio创建了一个小应用程序"SampleHybridProject",并成功地进行了测试。
现在,当我试图在Worklight Server消费者版上部署它时,并点击以下URL: http://mymachine.com:9080/SampleHybridProject/console
我的浏览器出现了这个错误:
错误404:com.ibm.ws.webcontainer.servlet.exception.NoTargetForURIException: No target servlet configured for uri:/SampleHybridProject/console
我使用的是Worklight Edition 5.0.6。Worklight服务器默认为"WAS with Liberty profile"。
下面是我在worklight中更改的属性。属性文件。
publicWorkLightHostname=localhost
publicWorkLightProtocol=http
publicWorkLightPort=9080
publicWorkLightContext=/SampleHybridProject
wl.db.type=MYSQL
wl.db.url=jdbc:mysql://mysqlinstalledonmypc:3306/WRKLGHT
wl.db.username=root
wl.db.password=admin
下面是我在application-descriptor.xml中所做的更改:
<worklightServerRootURL>http://${local.IPAddress}:9080/SampleHybridProject</worklightServerRootURL>
你能告诉我我做错了什么或者我需要做什么吗?
我已经找到问题并解决了。问题是我在console.log文件中出现了这个错误:
在URL [jar:file:/C:/ProgramData/IBM/Worklight/WAS85liberty-server/wlp/usr/shared/resou/rces/lib/Worklight -jee-library.jar!/conf/core.xml]中创建名称为'txManager'的bean时出错:init方法调用失败;嵌套异常是java.lang.LinkageError: loader约束违反:loader (com/ibm/ws/classloading/internal/UnifiedClassLoader的实例)先前启动了加载名为"javax/sql/DataSource"的不同类型
这是因为我在项目的server/lib文件夹中有一个jar导致了这个问题。我从server/lib文件夹中删除了jar并重新部署了.war文件。现在控制台正在加载。
您的自由日志中有任何部署错误吗?上下文根上的404通常意味着没有找到WAR,或者上下文根默认为"SampleHybridProject"以外的其他内容。如果WAR看起来正在正确加载,它将输出它正在监听的位置,类似于:
[AUDIT] CWWKT0016I: Web application available (default_host): http://[hostname]:port/SampleHybridProject/*
如果它说上下文根不是SampleHybridProject,您可以在liberty的server.xml中的标记中设置它:
<application id="SampleHybridProject" name="SampleHybridProject"
location="SampleHybridProject.war" type="war"
context-root="SampleHybridProject">
...
</application>