2012-12-20 46 views
1

我是新來的騾子,並嘗試使用騾協調webservices。 我寫了一個簡單的web服務,但是當我試圖在tomcat中部署mule web項目時,我得到了這個日誌語句。如何在Tomcat中啓動Mule?

21 Dec, 2012 2:44:59 AM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_27\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;;C:\Program Files\Dell\DW WLAN Card;. 
21 Dec, 2012 2:45:00 AM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:PosMuleService' did not find a matching property. 
21 Dec, 2012 2:45:00 AM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-8080 
21 Dec, 2012 2:45:00 AM org.apache.coyote.ajp.AjpProtocol init 
INFO: Initializing Coyote AJP/1.3 on ajp-8009 
21 Dec, 2012 2:45:00 AM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 770 ms 
21 Dec, 2012 2:45:00 AM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
21 Dec, 2012 2:45:00 AM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.4 
21 Dec, 2012 2:45:13 AM org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
21 Dec, 2012 2:45:13 AM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
21 Dec, 2012 2:45:13 AM org.apache.coyote.ajp.AjpProtocol start 
INFO: Starting Coyote AJP/1.3 on ajp-8009 
21 Dec, 2012 2:45:13 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 13237 ms 

這是我的web.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 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" 
    version="3.0" metadata-complete="true"> 
    <display-name>PosMuleService</display-name> 

    <context-param> 
    <param-name>org.mule.config</param-name> 
    <param-value>/WEB-INF/spring-servlet.xml,/WEB-INF/maf_services.xml</param-value> 
    </context-param> 

    <listener> 
    <listener-class>org.mule.config.builders.MuleXmlBuilderContextListener</listener-class> 
    </listener> 

</web-app> 

這是我爲spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 

<!-- START SNIPPET: beans --> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> 
</beans> 

這是我maf_services.xml

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns="http://www.mulesoft.org/schema/mule/core" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" 
xmlns:http="http://www.mulesoft.org/schema/mule/http" 
xmlns:spring="http://www.springframework.org/schema/beans" 
xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/3.4/mule-cxf.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/3.4/mule-http.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.4/mule.xsd"> 

    <flow name="helloService"> 
    <http:inbound-endpoint address="http://localhost:8080/PosMuleService/hello" exchange-pattern="request-response"> 
     <cxf:simple-service serviceClass="org.example.HelloWorld"/> 
    </http:inbound-endpoint> 
    <component class="org.example.HelloWorldImpl" /> 
    </flow> 
    </mule> 

這是我的HelloWorld Impl

/** 
* 
*/ 
package org.example; 

import javax.jws.WebMethod; 
import javax.jws.WebParam; 
import javax.jws.WebResult; 
import javax.jws.WebService; 

/** 
* @author 
* 
*/ 
@WebService(endpointInterface = "org.example.HelloWorld", 
serviceName = "HelloWorld") 
public class HelloWorldImpl implements HelloWorld { 

    /* (non-Javadoc) 
    * @see org.example.HelloWorld#sayHi(java.lang.String) 
    */ 
    @WebMethod(operationName="sayHi") 
    public @WebResult(name="sayHiResult")String sayHi(@WebParam(name="text")String text) { 
     // TODO Auto-generated method stub 
     return "Hi "+text; 
    } 

} 

這是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>PosMuleService</groupId> 
    <artifactId>PosMuleService</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>PosMuleService Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
<dependencies> 
    <dependency> 
     <groupId>org.codehaus.groovy</groupId> 
     <artifactId>groovy-all</artifactId> 
     <version>1.8.1</version> 
    </dependency> 


    <dependency> 
     <groupId>org.mule.modules</groupId> 
     <artifactId>mule-module-builders</artifactId> 
     <version>3.4-M1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mule</groupId> 
     <artifactId>mule-core</artifactId> 
     <version>3.4-M1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mule.modules</groupId> 
     <artifactId>mule-module-scripting</artifactId> 
     <version>3.4-M1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mule.transports</groupId> 
     <artifactId>mule-transport-vm</artifactId> 
     <version>3.4-M1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mule.transports</groupId> 
     <artifactId>mule-transport-servlet</artifactId> 
     <version>3.4-M1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mule.transports</groupId> 
     <artifactId>mule-transport-stdio</artifactId> 
     <version>3.4-M1</version> 
    </dependency> 
    <dependency> 
     <groupId>asm</groupId> 
     <artifactId>asm-commons</artifactId> 
     <version>3.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.14</version> 
    </dependency> 
</dependencies> 

    <repositories> 
    <repository> 
     <id>mule-deps</id> 
     <name>Mule Dependencies</name> 
     <url>http://dist.codehaus.org/mule/dependencies/maven2</url> 
    </repository> 
    </repositories> 
    <build> 
    <finalName>PosMuleService</finalName> 
    </build> 
</project> 

我使用tomcat7.0和eclipse JUNO .. 任何想法,爲什麼我的騾子無法啓動properly..I既看不到,也沒有服務的WSDL .. 獲得404 URL在服務器日誌中我得到這條線

http://localhost:8080/PosMuleService/hello 

注:INFO: No Spring WebApplicationInitializer types detected on classpath 但我已經加入彈簧servlet.xml文件中的WEB-INF,TR與上下文加載器,但沒有運氣。

+0

既然你已經放棄了使用Tomcat的想法,並且不會進一步探究問題,也不會提出我的建議,我建議你刪除這個問題。這對未來的讀者來說沒有任何價值,因爲我們無法達成令人滿意的解決方案。 –

+0

我不知道..這個問題可以幫助別人.. – Rajesh

回答

2

幾個問題:

  • 不要裝入Spring配置文件與騾子:在Web容器中運行時,從param-value
  • 刪除/WEB-INF/spring-servlet.xml不要使用HTTP入站端點:騾子將嘗試啓動Web服務器在這個端口上。而是使用servlet入站端點,以便Mule監聽由Web容器處理的servlet。

在你的情況下使用:

<servlet:inbound-endpoint path="hello" /> 
  • 騾的servlet添加到你的web.xml。

像這樣:

<servlet> 
    <servlet-name>muleServlet</servlet-name> 
    <servlet-class>org.mule.transport.servlet.MuleReceiverServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>muleServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
+0

@我做了這些改變,但服務器日誌再次相同..我認爲穆勒是不是正確啓動..任何想法..可能是什麼原因..我沒有異常分開INFO:沒有在類路徑上檢測到Spring WebApplicationInitializer類型 – Rajesh

+0

請更新您的問題,請使用每個文件的當前版本,包括啓動日誌。 –

+0

那麼?你做到了嗎?如果沒有,請使用每個文件的當前版本更新您的問題,包括啓動日誌。 –

0

雅我做了工作,但以下不同的方法。我無法使用tomcat來完成它。可能我們不應該在tomcat上運行mule,因爲我們必須依賴servlet線程進行處理,我認爲這會降低性能。如果我錯了,請糾正我。我讀了這個地方.. 我已經安裝了mule工作室並創建了一個mule項目 添加了maf_Services.xml和webservices代碼來mule工作室項目並執行該項目作爲mule應用程序。 在生產環境中,我將使用mule studio導出我的mule項目,並使用mule獨立服務器部署我的應用程序。

+0

我不認爲說使用Tomcat的servlet層會降低性能是不正確的。我從來沒有聽說過這種說法,也沒有看到任何數據。如果你可以運行獨立版本 - 這對於Mule來說是最自然的 - 爲什麼你想在Tomcat上運行呢? –

+0

雅我看了一些降低性能的地方..沒有得到鏈接,否則我會張貼..任何目前使用騾子獨立的方式.. – Rajesh

0

我可以確認你想在tomcat上部署的應用程序。

旁邊的變化大衛建議我改變流程定義如下:

<flow name="helloService"> 
    <servlet:inbound-endpoint path="hello" /> 
    <component class="org.example.HelloWorldImpl" /> 
</flow> 

在這裏,你不需要任何春。 如果你想使用Spring,在你的Mule配置定義以下組件:

<spring:beans> 
    <spring:import resource="classpath:applicationContext.xml"/> 
</spring:beans> 

確保你的Spring的ApplicationContext是在classpath。 (在maven文件結構中,將你的applicationContext放在src/main/resources /中)例如: