2011-08-05 19 views
33

पर जर्सी वेबपैप को तैनात करना वर्तमान में जेबॉस एएस 4/5 पर कुछ वेबपैप्स चला रहा है और मैं jboss7 पर माइग्रेशन का परीक्षण कर रहा हूं। जब मैं के रूप में 7 JBoss पर एक जर्सी आधारित webapp (स्टैंडअलोन-पूर्वावलोकन कॉन्फ़िग फ़ाइल के साथ पूर्ण प्रोफ़ाइल) को तैनात करने की कोशिश, मैं मिलता है:जेबॉस एएस 7

org.jboss.as.server.deployment.DeploymentUnitProcessingException: Only one JAX-RS Application Class allowed. 

मैं उस पर चारों ओर शिकार का एक सा किया है और पाया है कि RestEasy गए अनुप्रयोग सर्वर में एम्बेडेड डिफ़ॉल्ट जेएक्स-आरएस कार्यान्वयन। http://community.jboss.org/message/579996 और https://issues.jboss.org/browse/JBAS-8830 जैसे पोस्ट) उल्लेख करते हैं कि RestEasy नियोक्ता खत्म हो जाता है।

के रूप में 6 में, यह आसान लगता है, जबकि मैं 7 के रूप में

उत्तर

68

यह पहले से ही इस पोस्ट में उल्लेख किया गया है की जाँच: https://community.jboss.org/message/744530#744530, तो आप सिर्फ resteasy मॉड्यूल पूछ सकते हैं अन्य के लिए स्कैन नहीं करने के लिए आपके वेबएप में जेएक्स आरएस कार्यान्वयन; बस अपने web.xml से जोड़ें:

<context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>false</param-value> 
</context-param> 
<context-param> 
    <param-name>resteasy.scan.providers</param-name> 
    <param-value>false</param-value> 
</context-param> 
<context-param> 
    <param-name>resteasy.scan.resources</param-name> 
    <param-value>false</param-value> 
</context-param> 

मुझे

+0

काम किया! बहुत सरल और अच्छा जवाब! –

+0

मेरे लिए भी काम किया! वेब थोड़ा सा दुखद है।एक्सएमएल में अब कुछ विशिष्ट जेबॉस कॉन्फ़िगरेशन है। मैं jboss-deployment-struct.xml को संशोधित करके इसे काम करना पसंद करता हूं, लेकिन यह काम नहीं करता है। – Esk

+0

यह jboss की एक बग की तरह लगता है .. मैं भी अपने web.xml को संशोधित नहीं करना चाहूंगा लेकिन ऐसा लगता है कि – thiagoh

0

आप स्टैंडअलोन विन्यास में पिछले प्राप्त कर सकते हैं के लिए किसी भी समाधान करने के लिए विन्यास/standalone.xml को संशोधित करने और संदर्भ निकाल कर नहीं देखा है deployer दूर करने के लिए एक्सटेंशन और प्रोफाइल अनुभाग में जाक्सर्स। ध्यान दें, भले ही मैंने अपने स्टैंडअलोन.एक्सएमएल में उन हिस्सों को टिप्पणी की, जेबॉस स्वचालित रूप से अगले संदर्भों पर उन संदर्भों को स्वचालित रूप से हटा देगा ...

+0

यदि आपका मतलब है कि आपके संपादन जारी नहीं रहे हैं, तो आपको XML संपादन करने से पहले सर्वर को बंद करना होगा। रनटाइम में किए गए किसी भी बदलाव को रीबूट पर ओवरराइट किया जाएगा। ऑफ़लाइन किए गए परिवर्तन, या प्रबंधन कंसोल या सीएलआई के माध्यम से, लगातार रहेगा। इस तरह, आप आवश्यकतानुसार कस्टम सर्वर प्रोफाइल बना और लोड कर सकते हैं। – ddri

1

मैं अपने जेबीएसएसएसएस एएस 7 पर जर्सी डब्ल्यूएस चलाने में कामयाब रहा।

क्या मैं JBoss के लिए करते हैं JAX-रुपये standalone.xml

मेरे जर्सी नमूना कोड से मिल गया में सब कुछ संबंधित हटाने है: केवल एक चीज मैं जर्सी के लिए क्या हटाने है http://www.ibm.com/developerworks/web/library/wa-aj-tomcat/

web.xml से init-param और कॉपी जर्सी lib को वेबकंटेंट/WEB-INF/lib पर कॉपी करें।

<!--<init-param> 
    <param-name>com.sun.jersey.config.property.packages</param-name> 
    <param-value>sample.hello.resources</param-value> 
    </init-param>--> 
6

standalone.xml में पूरे jaxrs सबसिस्टम को हटाने के रूप में jboss-deployment-structure.xml में RESTEasy मॉड्यूल भी काम कर सकते हैं को छोड़कर अन्य पदों में उल्लेख किया है इसके अलावा।

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> 
    <deployment> 
    <exclusions> 
     <module name="org.jboss.resteasy.resteasy-atom-provider" /> 
     <module name="org.jboss.resteasy.resteasy-cdi" /> 
     <module name="org.jboss.resteasy.resteasy-jaxrs" /> 
     <module name="org.jboss.resteasy.resteasy-jaxb-provider" /> 
     <module name="org.jboss.resteasy.resteasy-jackson-provider" /> 
     <module name="org.jboss.resteasy.resteasy-jsapi" /> 
     <module name="org.jboss.resteasy.resteasy-multipart-provider" /> 
     <module name="org.jboss.resteasy.async-http-servlet-30" /> 
    </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

इसके अलावा

5

के लिए ठीक काम किया मेरा मानना ​​है कि सही दृष्टिकोण अनुप्रयोग सर्वर नास्तिक JAX-आरएस आवेदन तैनाती का प्रयोग है। किसी भी जेबॉस कॉन्फ़िगरेशन के साथ गड़बड़ करने की आवश्यकता नहीं है। आपको बस अपनी जेएक्स-आरएस वेब एप्लिकेशन में javax.ws.rs.core.Application का विस्तार करना है। आप एक उदाहरण here पा सकते हैं। फिर, आपको इसे अपने web.xml में रखना होगा।

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
    <param-name>javax.ws.rs.Application</param-name> 
    <param-value>jersey.MyApplication</param-value> 
    </init-param> 
    <context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>false</param-value> 
    </context-param> 
    <context-param> 
    <param-name>resteasy.scan.providers</param-name> 
    <param-value>false</param-value> 
    </context-param> 
    <context-param> 
    <param-name>resteasy.scan.resources</param-name> 
    <param-value>false</param-value> 
    </context-param> 

    <load-on-startup>1</load-on-startup> 
</servlet> 

पैकेज स्कैनिंग तंत्र JBoss 7.x पर सही ढंग से काम नहीं करता है। मैंने जेबॉस 7.0.2 में सफलतापूर्वक इस दृष्टिकोण का परीक्षण किया है। फाइनल और जेबॉस 7.1.1. फाइनल।

+0

मुझे एक ही अपवाद का सामना करना पड़ रहा है लेकिन मेरी पुस्तकालय ईएआर/लिब में हैं। ईएआर/lib के लिए आराम से स्कैनर कैसे बंद करें? – Sriram

0

क्या हम जेबॉस 7.1.1 और सर्वलेट 3.0 को शामिल करने के लिए "सर्वर-अज्ञेयवादी" दृष्टिकोण को अपडेट कर सकते हैं?

<context-param> संस्करण 3.0 वेब-एक्सएमएल में अमान्य है।

0

जेबॉस 7.1.1 और जर्सी 1.17.1 के लिए मेरे लिए क्या काम किया गया है। standalone.xml या domain.xml को संशोधित करने की कोई आवश्यकता नहीं है। Web.xml में restEasy को फ़िल्टर करने के अलावा जैक्सन जैक्सन का उपयोग करने के लिए निर्देश दें। आप इस कॉन्फ़िगरेशन here के बारे में पढ़ सकते हैं।

कॉन्फ़िगरेशन अनुमानों में समय बचाने के लिए, मैं परीक्षण परियोजना से web.xml और pom.xml पोस्ट कर रहा हूं।

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>TestJerseyonJBoss</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.test.rest</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
    <context-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.scan.providers</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.scan.resources</param-name> 
     <param-value>false</param-value> 
    </context-param> 
</web-app> 

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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>TestJerseyOnJBoss</groupId> 
    <artifactId>TestJerseyOnJBoss</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-bundle</artifactId> 
     <version>1.17.1</version> 
    </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-json</artifactId> 
      <version>1.17.1</version> 
     </dependency> 
    <dependency> 
       <groupId>asm</groupId> 
       <artifactId>asm</artifactId> 
       <version>3.3.1</version> 
       <type>jar</type> 
       <scope>compile</scope> 
    </dependency> 
    </dependencies> 

0

आप अपने तैनाती के लिए सक्रिय होने से jaxrs सबसिस्टम को बाहर रखना चाहिए META-INF में इस ऐड /jboss-deployment-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
    <exclude-subsystems> 
     <subsystem name="jaxrs" /> 
    </exclude-subsystems> 
    <deployment> 
</jboss-deployment-structure> 

या आप standalone.xml पर जा सकते हैं और उपप्रणाली को हटा सकते हैं। ऐसा करने के लिए, आप विन्यास के

<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"> 
... 
... 
<subsystem> 

हिस्से को हटाने की जरूरत है, ऊपर के विस्तार के भाग यह अभ्यस्त किसी भी तरह से चोट लगी रह सकते हैं। इस तरह के 7.1.1 पर पर काम नहीं करेगा 1.2 7.1.2 में और के रूप में जोड़ा गया है: या आप CLI के साथ सर्वर से कनेक्ट कर सकते हैं और

/subsystem=webservices:remove() 

बस एक नोट चलाने के लिए, को बाहर-उप कार्यक्षमता और तैनाती-strucure।

3
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
    <exclude-subsystems> 
    <subsystem name="jaxrs" /> 
    </exclude-subsystems> 
    </deployment> 
</jboss-deployment-structure> 

चाल क्या करेंगे, 7.3AS.ctomc के साथ महान बस अंत में एक छोटे से स्लैश याद खंड समाप्त करने के लिए काम करता है :-)

1
In web.xml file add the files 

     <context-param> 
      <param-name>resteasy.scan</param-name> 
      <param-value>false</param-value> 
     </context-param> 
     <context-param> 
      <param-name>resteasy.scan.providers</param-name> 
      <param-value>false</param-value> 
     </context-param> 
     <context-param> 
      <param-name>resteasy.scan.resources</param-name> 
      <param-value>false</param-value> 
     </context-param> 

and comment out the init-param 
     <!-- <init-param> 
        <param-name>com.sun.jersey.config.property.packages</param-name> 
        <param-value></param-value> 
     </init-param> --> 

This worked out for me in jboss-as-7.1.1.Final and i did not do any changes in standalone.xml. 
1

Ahother विकल्प:।

  1. स्टैंडअलोन/कॉन्फ़िगरेशन/standalone.xml संपादित करें और सभी जाक्सर्स प्रविष्टियों को टिप्पणियां दें। यह रीस्टेसी के बजाय जर्सी को कॉन्फ़िगर करेगा।
  2. वेब-आईएनएफ/web.xml से jboss-web.xml निकालें। इस फ़ाइल में कोई longers JBoss साथ काम करता है 7
  3. web.xml संपादित करें, एक init-परम अपने संसाधन के पैकेज के लिए कॉन्फ़िगर com.sun.jersey.config.property.packages जोड़ने जैसे:

    <init-param> 
        <param-name>com.sun.jersey.config.property.packages</param-name> 
        <param-value>org.foo</param-value> 
    </init-param> 
    

https://github.com/Atmosphere/atmosphere/wiki/Deploying-Atmosphere-Jersey-in-JBoss-7.1.x

संबंधित मुद्दे