如何解决jboss 4 to jboss 7.1 deploy .war 迁移问题
我在 jboss 7.1 上部署适用于 jboss 4.2.3 的 .war 时遇到错误,如下所示:
TServerXmlRpc-4.1.0rc2.war
cal.gif
MFDJAds.jsp
MFDJAdsUpload.jsp
MFDJAdsUploaded.jsp
next.gif
prev.gif
ts_picker.js
\META-INF
jboss-deployment-structure.xml <<<--- I added this for jboss 7.1
MANIFEST.MF
\WEB-INF
\classes <<<--- this contains a hierarchy org/company/class1 etc. of compiled java .class
web.xml
jboss-deployment-structure.xml <<<--- I added this for jboss 7.1
jboss-web.xml
\lib
commons-codec-1.3.jar
commons-fileupload-1.2.2.jar
commons-httpclient-2.0.2.jar
commons-io-1.4.jar
gson-2.2.4.jar
TServer-4.1.0rc2.jar <<<---------- this jar contains some "ejb3" that are not found by jboss 7.1
17:54:55,898 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015876: Starting deployment of "TServerXmlRpc-4.1.0rc2.war"
17:54:56,152 INFO [org.jboss.as.jpa] (MSC service thread 1-3) JBAS011401: Read persistence.xml for oracledb
17:54:56,176 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.module.service."deployment.TServerXmlRpc-4.1.0rc2.war".main: org.jboss.msc.service.StartException in service jboss.module.service."deployment.TServerXmlRpc-4.1.0rc2.war".main: Failed to load module: deployment.TServerXmlRpc-4.1.0rc2.war:main
at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:91) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) [rt.jar:1.7.0_261]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622) [rt.jar:1.7.0_261]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.7.0_261]
Caused by: org.jboss.modules.ModuleNotFoundException: Module TServer-4.1.0rc2.jar:main is not found in local module loader @766c3bde (roots: /opt/wildfly/modules)
at org.jboss.modules.LocalModuleLoader.findModule(LocalModuleLoader.java:126)
at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:271)
at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:218)
at org.jboss.modules.LocalModuleLoader.preloadModule(LocalModuleLoader.java:94)
at org.jboss.modules.ModuleLoader.preloadExportedModule(ModuleLoader.java:229)
at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:242)
at org.jboss.as.server.moduleservice.ServiceModuleLoader.preloadModule(ServiceModuleLoader.java:160) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.modules.Module.addPaths(Module.java:851)
at org.jboss.modules.Module.link(Module.java:1208)
at org.jboss.modules.Module.relinkIfNecessary(Module.java:1237)
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:204)
at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 5 more
17:54:56,384 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "TServerXmlRpc-4.1.0rc2.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.module.service.\"deployment.TServerXmlRpc-4.1.0rc2.war\".main" => "org.jboss.msc.service.StartException in service jboss.module.service.\"deployment.TServerXmlRpc-4.1.0rc2.war\".main: Failed to load module: deployment.TServerXmlRpc-4.1.0rc2.war:main"}}
我需要以某种方式指定类路径以在此处包含 jar 吗? /WEB-INF/lib/TServer-4.1.0rc2.jar
我也将 jar 作为“模块”放在这里:/opt/jboss6/modules/it/company/tserver/main
<?xml version='1.0' encoding='US-ASCII'?>
<module xmlns="urn:jboss:module:1.1" name="it.onetech.tserver">
<resources>
<resource-root path="TServer-4.1.0rc2.jar"/>
</resources>
<dependencies>
</dependencies>
</module>
并通过将其放入 /opt/jboss6/standalone/deployments 将其成功部署为 .jar 文件
TServer-4.1.0rc2.jar 包含一些“远程”“ejb”\org\company\tserver\local\xyz.class(.war 中的 Java 代码需要这些),如下所示:
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class PolicyManagerFactory {
private static TLogger logger = LogManager.getLogger(PolicyManagerFactory.class);
public static PolicyManager getPolicyManager() {
String policyManagerBeanName = Directory.getPolicyManager();
try {
javax.naming.Context ctx = InitialContextFactory.create();
return (PolicyManager) ctx.lookup(policyManagerBeanName + "/remote");
} catch (NamingException ne) {
logger.error("Can't lookup " + policyManagerBeanName,ne);
}
return null;
}
}
更新:经过更多的实验,在我看来你可以放一个罐子,所有依赖罐子都在战争的 /WEB-INF/lib/ 中(简单地)不需要“模块”,以防对初学者有用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。