使用JAX-WS,我们开发了一个WebService,无法在运行在LINUX JAVA 64Bit上的WebLogic 12c上进行部署。但是,使用JAVA 32Bit在Windows 7上运行的WebLogic 12c上部署了相同的WAR文件,并且它工作正常。这是信息。请告诉我们我们哪里/哪些可能出错。提前致谢
WebLogic生产日志
####<Nov 17, 2014 3:50:36 PM MYT> <Info> <Deployer> <Host> <Managed1>
<Module GetShipmentChargeDetails.war of application GetShipmentChargeDetails
successfully transitioned from STATE_PREPARED to STATE_ADMIN on server Managed1.>
####<Nov 17, 2014 3:50:36 PM MYT> <Info> <ServletContext-/GetShipmentChargeDetails>
<No Spring WebApplicationInitializer types detected on classpath>
<Servlet: "ShipmentChargeWSServlet" failed to preload on
startup in Web application: "GetShipmentChargeDetails.war".
javax.xml.ws.WebServiceException: java.lang.NoClassDefFoundError:
Could not initialize class com.company.scws.service.GetShipmentChargeDetails
错误消息
Web Service不使用任何与Spring相关的
<No Spring WebApplicationInitializer types detected on classpath>
提前致谢并感谢任何帮助/提示。
答案 0 :(得分:0)
最后我发现了发生的事情。它基本上是误导了WebLogic 12c的错误日志。该问题与<No Spring WebApplicationInitializer types detected on classpath>
或java.lang.NoClassDefFoundError
无关。
WebService类正在获取另一个类的实例,而这个类又加载了在类路径中找不到的属性(application.props)。而不是为找不到的prop文件抛出NullPointer,系统在WebService部署时显示不同的错误消息。
错误是由于APP_PROP_FILE不在任何类路径中
applicationProps.load(AppUtils.class.getClassLoader().getResourceAsStream(
APP_PROP_FILE));
示例代码段
static Properties applicationProps;
public static synchronized AppUtils getInstance() {
if (appUtils == null)
appUtils = new AppUtils();
return AppUtils;
}
public AppUtils() {
PropertyConfigurator.configure(System.getProperty("log4j.configuration"));
loadProperties();
}
public static Properties getApplicationProps() {
if (applicationProps == null)
loadProperties();
return applicationProps;
}
private static void loadProperties() {
applicationProps = new Properties();
try {
applicationProps.load(AppUtils.class.getClassLoader().getResourceAsStream(
APP_PROP_FILE));
}
catch (IOException e) {
e.printStackTrace();
}
}