0

将 WebSphere App 移植到运行 Java 6 的 TOMCAT 7

我们只是想看看这是否可以做到。我们不使用 EJB。该应用程序已有 10 年历史,并连接到 Oracle 数据库 (11g)。我们一直在添加和修改它,因为它被大量使用。它一直在 Websphere 6.1 下运行,并且确实有几个 JAX-RPC Web 服务。我让它在 WebSphere 8.5 上运行,但由于成本高昂,我们决定尝试 TOMCAT 7 和 JUNO。

我没有与 Tomcat 广泛合作,因为这是一家 IBM 商店。似乎有更多的应用程序在使用 Tomcat,所以我非常愿意学习。我安装了 Eclipse - Juno,并在我的工作区中创建了一个新的动态 Web 项目后引入了应用程序文件。我们的应用程序被部署为 EAR 文件,但在这里我将其部署为 WAR 文件。构建时出现许多警告和错误。

我安装了 TOMCAT 并使用我在网上找到的一个可以正确部署和运行的 webServices 应用程序小教程对其进行了测试。我将服务器带入了我的项目。
通过找到 jar 文件并将它们移动到 WEB/lib 或 Tomcat lib 目录中,可以快速解决大多数编译错误。例如,ojdbc6.jar 文件位于 Tomcat 库中。

我现在不打算进行最佳配置,我们只是想看看我们是否可以让它工作。这就是我将 com.ibm.ws.runtime.jar 移到应用程序的 WEB-INF 库中以清除大多数编译错误的原因。我们绝对不想继续使用它,但如果我们让它运行,我们将进一步尝试删除它并重新生成 Web 服务。我很快就得到了一个干净的编译。

我确实让数据源资源管理器将数据库连接识别为旁白,但我在启动应用程序时遇到了麻烦。这是我所做的。
在我的应用程序 web.xml 文件的顶部,我为 Oracle 数据库添加了一个条目,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <display-name>SupplierNetRelease</display-name>
    <resource-ref>
        <description>SupplierNet Oracle Database</description>
        <res-ref-name>jdbc/SupplierNetDataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    <servlet>
        <display-name>MsgLogin</display-name>
        <servlet-name>MsgLogin</servlet-name>
        <servlet-class>com.alstom.power.suppliernet.servlets.MsgLogin</servlet-class>
    </servlet>.........

我想知道我是否应该重新生成这个被应用程序移植过来的文件?它显示 web-app version="2.5" 虽然我相信 Tomcat 7 可以与 3.0 一起使用。

在 Tomcat 的 context.xml 文件中,我添加了:

...<Resource name="SupplierNetDataSource"
        auth="Container"
        type="javax.sql.DataSource"
        username="xxxxxx"
        password="xxxxxx"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@localhost:1521:supnjttx"
        maxActive="10"
        maxIdle="4"/>

</Context>

到目前为止,我还没有对 server.xml 文件进行任何更改。在 tomcat-Users.xml 中,我将自己添加为 manager-gui。我们不希望任何其他应用程序在服务器上运行,但我们的。我不知道是否可以尝试向 GlobalNamingResources 部分添加任何内容,尽管一些文档似乎暗示了这一点。

当我第一次启动服务器时,我遇到了一个 xml 解析错误,我没有追踪到它,但是现在的情况是这样的,错误没有出现。我现在得到一个“无法启动组件”(见下文)“原因:java.lang.IllegalArgumentException:servlet 映射中的无效服务/授权程序”等等。

INFO: Initializing ProtocolHandler ["http-apr-8080"]
Jun 4, 2013 10:36:56 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-apr-8009"]
Jun 4, 2013 10:36:56 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 633 ms
Jun 4, 2013 10:36:56 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jun 4, 2013 10:36:56 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.40
Jun 4, 2013 10:36:56 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive D:\apache-tomcat-7\apache-tomcat-7.0.40\
webapps\SupplierNetRelease.war
Jun 4, 2013 10:36:56 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:00 AM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngin
e[Catalina].StandardHost[localhost].StandardContext[/SupplierNetRelease]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:87
7)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)

        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)

        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:
1654)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> services/Au
thorizer in servlet mapping
        at org.apache.catalina.core.StandardContext.addServletMapping(StandardCo
ntext.java:3223)
        at org.apache.catalina.core.StandardContext.addServletMapping(StandardCo
ntext.java:3198)
        at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1366)
        at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.jav
a:1353)
        at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfi
g.java:878)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi
g.java:369)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa
se.java:90)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContex
t.java:5269)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 11 more
Jun 4, 2013 10:37:00 AM org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive D:\apache-tomcat-7\apache-tomcat
-7.0.40\webapps\SupplierNetRelease.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catal
ina.LifecycleException: Failed to start component [StandardEngine[Catalina].Stan
dardHost[localhost].StandardContext[/SupplierNetRelease]]
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:904)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:87
7)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)

        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)

        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:
1654)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Jun 4, 2013 10:37:00 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive D:\apache-tomcat-7\apache-tomcat-7.0.40\
webapps\WebServices.war                  <-------------------------------------- test app I deployed
Jun 4, 2013 10:37:00 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:01 AM com.sun.xml.ws.transport.http.servlet.WSServletDelegate
<init>
INFO: WSSERVLET14: JAX-WS servlet initializing
Jun 4, 2013 10:37:01 AM com.sun.xml.ws.transport.http.servlet.WSServletContextLi
stener contextInitialized
INFO: WSSERVLET12: JAX-WS context listener initializing
Jun 4, 2013 10:37:01 AM com.sun.xml.ws.transport.http.servlet.WSServletContextLi
stener contextInitialized
INFO: WSSERVLET12: JAX-WS context listener initializing
Jun 4, 2013 10:37:01 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\apache-tomcat-7\apache-tomcat-7.0.4
0\webapps\docs
Jun 4, 2013 10:37:01 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:01 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\apache-tomcat-7\apache-tomcat-7.0.4
0\webapps\examples
Jun 4, 2013 10:37:01 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:02 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\apache-tomcat-7\apache-tomcat-7.0.4
0\webapps\host-manager
Jun 4, 2013 10:37:02 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:02 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\apache-tomcat-7\apache-tomcat-7.0.4
0\webapps\manager
Jun 4, 2013 10:37:02 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:03 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\apache-tomcat-7\apache-tomcat-7.0.4
0\webapps\ROOT
Jun 4, 2013 10:37:03 AM org.apache.tomcat.util.digester.Digester endElement
WARNING:   No rules found matching 'Context/resource'.
Jun 4, 2013 10:37:03 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8080"]
Jun 4, 2013 10:37:03 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-apr-8009"]
Jun 4, 2013 10:37:03 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 6755 ms

如果有人可以提出一些建议,我将不胜感激。如果您想看更多,请让我清楚地知道您想看什么。我们希望它在没有上下文的情况下运行,但此时这是次要的。如果我错过了一些明显的东西,我深表歉意。提前致谢。

4

2 回答 2

0

根据规范,像这样的 url 模式必须以/. 将您的 web.xml 更改为:

<url-pattern>/services/Authorizer</url-pattern>
于 2013-06-05T14:00:30.323 回答
0

警告:找不到匹配“上下文/资源”的规则。

这是一个严重的问题!请记住, 的内容context.xml区分大小写

于 2017-08-12T06:53:05.620 回答