2013-06-04 30 views
0

移植的WebSphere應用程序的開發,以TOMCAT 7運行Java 6啓動Web應用程序跑和爲WebSphere

我們只是想看看是否可以做到這一點。我們不使用EJB。該應用程序已有10年曆史,並連接到Oracle數據庫(11g)。我們一直在增加它並修改它,因爲它在大量使用。它一直在Websphere 6.1下運行,並且有幾個JAX-RPC web服務。我將它運行在WebSphere 8.5上,但現在的成本已經降低,我們決定嘗試TOMCAT 7和JUNO。

由於這是一家IBM商店,我還沒有廣泛使用Tomcat。更多的應用似乎使用Tomcat,所以我非常樂意學習。我安裝了Eclipse - Juno,並在我的工作空間中創建了新的動態Web項目後引入了應用程序文件。我們的應用程序被部署爲一個EAR文件,但在這裏我要將它部署爲一個WAR文件。構建時有很多警告和錯誤。

我安裝了TOMCAT並使用我在網上發現的一個小webServices應用程序教程進行了測試,該教程已部署並正確運行。我把服務器帶入我的項目。
通過查找jar文件並將它們移動到WEB/lib或Tomcat lib目錄中,可以快速解決大多數編譯錯誤。例如,ojdbc6.jar文件位於Tomcat庫中。

我現在不打算進行最佳配置,我們只是想看看我們是否能夠實現這個目標。這就是爲什麼我將com.ibm.ws.runtime.jar移動到應用程序的WEB-INF庫中以清除大多數編譯錯誤。我們絕對不希望繼續使用,但如果我們能夠實現這一點,我們將進一步努力,並嘗試刪除Web服務的再生產。我很快得到了一個乾淨的編譯。

我確實獲得了Data Source Explorer來將數據庫連接識別爲旁白,但我在啓動應用程序時遇到了問題。這是我所做的。
在我的應用程序的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應用程序版本=「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:無效的服務/ Au 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 

如果有人可以提出建議,我將不勝感激。如果你想看更多,請讓我清楚知道你想看到什麼。我們希望這個在沒有上下文的情況下運行,但是在這一點上這是次要的 。我很抱歉,如果我錯過了一些明顯的事情。提前致謝。

+0

服務器故障可能是這個問題的更好的地方。 – Maerlyn

回答

0

根據規範,這樣的網址格式必須以/開頭。你的web.xml更改爲:

<url-pattern>/services/Authorizer</url-pattern> 
+0

這很好。我寫這篇文章後發生在我身上,所以我試過了。奇怪的是,這就是我們的WebSphere發佈版本!現在我還有其他一些錯誤,如果我再次陷入困境,我會發布。有一件事,像Authorizer這樣的服務不會被識別爲servlet,而是它們在WebSphere中的配置! – jamestthomas

+0

似乎WebSphere Application Server在解析url模式時更多..forgiving .. –

0

警告:沒有規矩找到匹配的 '語境/資源'。

這是一個嚴重的問題!請記住,context.xml的內容是區分大小寫