第1个问题:css
异常描述:VALIDATION PROBLEMS WERE FOUND problem: cvc-enumeration-valid: string value '3.0' is not a valid enumeration value for web-app-versionType in namespace http://java.sun.com/xml/ns/javaee:<null>java
由于建立项目的时候用的是JAVAEE6,因此生成web.xml文件的时候是这样的:web
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
weblogic10.3.6并不支持web-app_3_0.xsd的定义。因此报错了。spring
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
或者部署到weblogic 12。express
第2个问题:tomcat
异常描述:mvc
Caused by: weblogic.management.DeploymentException: [HTTP:101170]The servlet default is referenced in servlet-mapping *.js, but not defined in web.xml.app
缘由:用默认servlet处理静态资源。url
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping>
每一个web容器都有一个默认servlet,在tomcat默认servlet的名字是:defalut。而在weblogic是:FileServlet。下面列出各容器的默认servlet的名字spa
Tomcat, Jetty, JBoss, and GlassFish 默认 Servlet的名字"default" WebLogic 默认 Servlet的名字 "FileServlet" ,WebSphere默认 Servlet的名字 "Simpledefault" 。
将上面的default改为FileServlet就能够了。
第3个问题:
异常描述:
Annotation-specified bean name 'containerTransactionType.Factory' for bean class [com.sun.java.xml.ns.javaee.ContainerTransactionType$Factory] conflicts with existing, non-compatible bean definition of same name and class [com.sun.java.xml.ns.j2Ee.ContainerTransactionType$Factory]
缘由:
mvc-dispatcher-servlet.xml里有这样一个配置,
<!-- 须要扫描的标注了@Controller的类 --> <context:component-scan base-package="com"> <context:include-filter type="regex" expression=".*.action.*" /> <!-- 这里排除service,防止事务失效 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan>
个人包名是com.公司名.模块名。因为weblogic的包里也有以com开头action结尾的包,spring把它的包也扫描了,并注入容器。出现了同名的bean。因此报错。
解决方法, 将<context:component-scan base-package="com">中包名加一层, 改为: <context:component-scan base-package="com.公司名">。
第4个问题:
异常描述:
Caused by: java.lang.Throwable: Substituted for missing class org.springframework.beans.factory.BeanCreationException - Error creating bean with name 'ditemAction': Injection of autowired depende
ncies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.jfpal.riskmanage.item.service.IDitemService
这是在createing 控制器 ‘ditemAction’时出的错。缘由是没法注入属性com.jfpal.riskmanage.item.service.IDitemService 。代码确定没问题的,tomcat上运行正常。
通过分析,判定spring没扫描com.jfpal.riskmanage.item.service.IDitemService 所在的包。
而后查看web.xml,发现以下配置
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext*.xml</param-value> </context-param>
将其改成:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml,classpath:applicationContext-myBatis.xml</param-value> </context-param>
后面那个数据源的配置。改后部署成功。缘由是weblogic和tomcat解析<param-value>有点不同。
第5个问题:
访问项目时出错,报404,说找不到**/**/dwz.frag.xml。查看web.xml,没有配置xml静态资源的访问,加上以下配置
<servlet-mapping> <servlet-name>FileServlet</servlet-name> <url-pattern>*.xml</url-pattern> </servlet-mapping>
至此迁移成功。
还有一些问题,参考个人另外一篇文章《weblogic部署tomcat项目时遇到的一些错误及解决方式》https://my.oschina.net/shuming/blog/698155