geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Kakunin" <akaku...@emdev.ru>
Subject CXF + Spring under Geronimo 2.1.1
Date Tue, 24 Jun 2008 19:07:04 GMT
Hello again.

Periodically I'm returning to this problem again and again - since it looks
very strange why application.correctly run on most server from Jetty &
Tomcat and finishing JBoss and GlassFish - but cannot run on Geronimo.

So, playing a little bit more I hope I managed classloader problems, but now
I cannot create services (CXF + Spring) due to security problems (Stack
trace specified below).

Does anybody has success experience with using CXF 2.1 & Spring 2.5 under
Geronimo 2.1.1?

Caused by: java.security.AccessControlException: access denied
(javax.xml.ws.WebServicePermission publishEndpoint)
    at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at
java.security.AccessController.checkPermission(AccessController.java:546)
    at
org.apache.cxf.jaxws.EndpointImpl.checkPublishPermission(EndpointImpl.java:375)
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:241)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:194)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:380)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1412)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1373)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
    ... 89 more

2008/5/6 Alexey Kakunin <akakunin@emdev.ru>:

> Jarek
> thank you very much for advise - but it did not helped :(
>
> Can you explain me why this may help me (probably understanding this I will
> able to find some other solution)
>
> Thank you again.
>
> 2008/5/5 Jarek Gawor <jgawor@gmail.com>:
>
> Try adding <sys:filter>META-INF/spring</sys:filter> to your
>> <sys:hidden-classes> element. That might help with the
>> UnsatisfiedDependencyException but I'm not 100% sure.
>>
>> Jarek
>>
>> On Mon, Apr 28, 2008 at 9:50 AM, Alexey Kakunin <akakunin@emdev.ru>
>> wrote:
>> > Hello! I'm currently working with migrating quite big war-only
>> application
>> > (http://www.emforge.org) to the Geronimo.
>> > We are using Tomcat 5.5/6.0 for development, but already prepared
>> "special"
>> > versions for JBossAS and GlassFis to provide better integration
>> > (http://www.emforge.org/wiki/EmForgeJ2EEIntegration has a little bit
>> more
>> > details).
>> >
>> > So, now the turn on Geronimo.
>> >
>> > This application is used many dependencies, some of which make sense
>> are:
>> > * JSF-RI 1.2 & Facelets & RichFaces 3.2.0
>> > * Spring 2.5.2
>> > * CXF 2.0.5-incubator.
>> >
>> > During trying to run application on GlassFish I met some problems, seems
>> > related to the facts, that Geronimo is used a little bit another
>> versions:
>> >  * MyFaces 1.2 (as JSF Implementation)
>> > * Spring 2.0.5
>> > * CXF 2.0.2
>> >
>> > But before one general question: how to use some default (I suppose
>> > jdbc/ActiveDS) DataSource in my application?
>> > We need it because by default, we are using build-in file-based HSQL,
>> but in
>> > these "special" pacjkages for J2EE servers we provide some better
>> > integration - for example we are using some default DS as DataSource. It
>> > allows user to start application by simple deploying (without any
>> external
>> > configuration) and avoid from using HSQL (it has some problems).
>> >
>> > I read documentation
>> > (http://cwiki.apache.org/GMOxDOC21/deployment-plans.html) and trying to
>> do
>> > like it is described there  - added resource into web.xml:
>> >
>> >     <resource-ref>
>> >         <res-ref-name>jdbc/ActiveDS</res-ref-name>
>> >         <res-type>javax.sql.DataSource</res-type>
>> >         <res-auth>Container</res-auth>
>> >         <res-sharing-scope>Shareable</res-sharing-scope>
>> >      </resource-ref>
>> >
>> > And added dependency into geronimo-web.xml (may be it is not correct -
>> but I
>> > tried different ways):
>> >
>> >
>> > <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"
>> >            xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
>> >           xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
>> >            xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2
>> ">
>> >
>> >     <sys:environment>
>> >         <sys:moduleId>
>> >             <sys:groupId>org.emforge</sys:groupId>
>> >              <sys:artifactId>EmForge</sys:artifactId>
>> >             <sys:version>0.23</sys:version>
>> >             <sys:type>war</sys:type>
>> >         </sys:moduleId>
>> >
>> >          <sys:hidden-classes>
>> >
>> > <sys:filter>org.jaxen,org.springframework,org.apache.cxf</sys:filter>
>> >            </sys:hidden-classes>
>> >
>> >            <sys:dependencies>
>> >              <sys:dependency>
>> >                 <sys:groupId>console.dbpool</sys:groupId>
>> >                 <sys:artifactId>jdbc%2FActiveDS</sys:artifactId>
>> >             </sys:dependency>
>> >          </sys:dependencies>
>> >     </sys:environment>
>> >     <context-root>/EmForge</context-root>
>> >     <nam:resource-ref>
>> >         <nam:ref-name>jdbc/ActiveDS</nam:ref-name>
>> >          <nam:resource-link>jdbc/ActiveDS</nam:resource-link>
>> >         <nam:pattern>
>> >           <nam:groupId>console.dbpool</nam:groupId>
>> >           <nam:artifactId>jdbc%2FActiveDS</nam:artifactId>
>> >            <nam:name>jdbc/ActiveDS</nam:name>
>> >         </nam:pattern>
>> >     </nam:resource-ref>
>> >
>> >
>> > But in this case I'm getting error during deployment:
>> >
>> > error: cvc-complex-type.2.4a: Expected elements
>> > 'non-overridable-classes@
>> http://geronimo.apache.org/xml/ns/deployment-1.2
>> > inverse-classloading@http://geronimo.apache.org/xml/ns/deployment-1.2
>> > suppress-default-environment@
>> http://geronimo.apache.org/xml/ns/deployment-1.2'
>> > instead of 'dependencies@
>> http://geronimo.apache.org/xml/ns/deployment-1.2'
>> > here in element environment@
>> http://geronimo.apache.org/xml/ns/deployment-1.2
>> >
>> >
>> > error: cvc-complex-type.2.4b: Element not allowed:
>> > pattern@http://geronimo.apache.org/xml/ns/naming-1.2 in element
>> > resource-ref@http://geronimo.apache.org/xml/ns/naming-1.2
>> >
>> >
>> >
>> >
>> >
>> > What I'm doing wrong here?
>> >
>> >
>> > Another question - MyFaces and JSF-RI?
>> > Is it possible to configure somehow my application to use JSF-RI instead
>> of
>> > MyFaces. Problem is - we have some  custom renderers, which
>> implementation
>> > is inherited from com.sun renderers, so - when I'm deploying application
>> > into Geronimo - I'm getting class-not-found error.
>> >
>> > Last Question - Implementing Web-Services with using CXF & Spring.
>> > Some services in our application wrapped with CXF-based Web-Services
>> > Implementation. For doing it we have defined in spring context:
>> >
>> >     <!-- Load CXF modules from cxf.jar -->
>> >      <import resource="classpath:META-INF/cxf/cxf.xml" />
>> >     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>> >     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>> >
>> >     <!-- Enable message logging using the CXF logging feature -->
>> >     <cxf:bus>
>> >         <cxf:features>
>> >             <cxf:logging/>
>> >         </cxf:features>
>> >     </cxf:bus>
>> >
>> >
>> >     <!-- Service endpoint -->
>> >     <!-- See http://incubator.apache.org/cxf/faq.html regarding CXF +
>> Spring
>> > AOP -->
>> >     <jaxws:endpoint id="bpmWsService"
>> >              implementorClass="org.emforge.jbpm.BpmServiceImpl"
>> >             implementor="#bpmService"
>> >             address="/org.emforge.BpmService">
>> >         <jaxws:inInterceptors>
>> >              <bean
>> > class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
>> >                <ref bean="wss4jInConfiguration"/>
>> >
>> >             <bean
>> > class="ru.emdev.EmForge.security.ValidateUserTokenInterceptor"/>
>> >          </jaxws:inInterceptors>
>> >     </jaxws:endpoint>
>> >
>> >
>> > But I'm getting followed error during starting application:
>> >
>> > org.springframework.beans.factory.UnsatisfiedDependencyException: Error
>> > creating bean with name 'bpmWsService': Unsatisfied dependency expressed
>> > through constructor argument with index 2 of type [java.lang.String]:
>> > Ambiguous constructor argument types - did you specify the correct bean
>> > references as constructor arguments?
>> >
>> >
>> > I tried both - put org.apache.cxf and org.springframework into
>> > hidden-classes via:
>> > <sys:hidden-classes>
>> >                <sys:filter>org.jaxen</sys:filter>
>> >                <sys:filter>org.springframework</sys:filter>
>> >                 <sys:filter>org.apache.cxf</sys:filter>
>> >            </sys:hidden-classes>
>> >
>> > But still getting this error.
>> >
>> > I tried to hide classes via:
>> >         <sys:hidden-classes>
>> >
>> > <sys:filter>org.jaxen,org.springframework,org.apache.cxf</sys:filter>
>> >            </sys:hidden-classes>
>> >
>> > but it is not work at all (I'm starting to get errors related to
>> org.jaxen).
>> >
>> > I tried to switch my application to cxf-2.0.2 (since for me it is not so
>> > important which version is used and I like the idea to remove some
>> > dependencies from our war-file to make is smaller) - same effect.
>> > I tried to remove cxf from my war-file libs (so, to use only cxf from
>> > geronimo) - I've got error ClassNotFound on servlet definition:
>> >
>> >    <servlet>
>> >         <servlet-name>CXFServlet</servlet-name>
>> >         <servlet-class>
>> >             org.apache.cxf.transport.servlet.CXFServlet
>> >         </servlet-class>
>> >     </servlet>
>> >      <servlet-mapping>
>> >         <servlet-name>CXFServlet</servlet-name>
>> >         <url-pattern>/ws</url-pattern>
>> >     </servlet-mapping>
>> >     <servlet-mapping>
>> >         <servlet-name>CXFServlet</servlet-name>
>> >          <url-pattern>/ws/*</url-pattern>
>> >     </servlet-mapping>
>> >
>> >
>> > I looked into tutorials - but found only tutorial about writting
>> > web-services for Geronimo with using Axis2 - not CXF...
>> >
>> >
>> > So, really do not know what is a correct way to define CXF-based
>> > web-services in Geronimo. Does anybody has any suggestions.
>> >
>> >
>> > I will be happy to any help. For us it is really important to add
>> support
>> > for Geronimo - in this case our application with run on all
>> most-important
>> > Open-Source J2EE servers.
>> >
>> > --
>> > With best regards,
>> > Alexey Kakunin
>>
>
>
>
> --
> With best regards,
> Alexey Kakunin
>



-- 
With best regards,
Alexey Kakunin

Mime
View raw message