About use factory to create resource

View: New views
2 Messages — Rating Filter:   Alert me  

About use factory to create resource

by SARA1232007 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I tried to use a factory to create a managed resource and then access the resource directly without searching the ServiceGroup.

I have modified the wrsf example as following:
1) use WsrMEPMBeanFactory to create a managed resource, ie, WsrMEPMBean, the code is following:

    public void initializeCompleted()
        throws SoapFault
    {
        super.initializeCompleted();

                ResourceManager manager = getResource().getResourceManager();
                                       
                Resource next = manager.createResource("WsrMEPMBean");
                next.initialize();

        getLog().warning("WsrMEPMBeanFactoryImpl.initializeCompleted():: WsrMEPMBean address:"+next.getEndpointReference().getAddress());
    }


2) rename the WsResource to WsrMEPMBean
3) remove the declarence and implementation of ServiceGroup and ServiceGroupEntry.
 
The log information of client which try to build a WsrServerClient to access "http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean" directly without searching ServiceGroup. The client trace information tells me that the endpoint "http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean" does not exist, while the server information tells me that the resource with address "http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean" is already created. The detailed trace information of client is as following:

[CLIENT TRACE] SOAP envelope contents (outgoing):

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header>
        <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean</wsa:To>
        <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest</wsa:Action>
        <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:0593b5c8-f369-8188-7674-e76599ba8a94</wsa:MessageID>
        <wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing">
            <wsa:Address>http://www.w3.org/2005/08/addressing/role/anonymous</wsa:Address>
        </wsa:From>
    </soap:Header>
    <soap:Body>
        <wsrf-rp:GetResourcePropertyDocument xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"/>
    </soap:Body>
</soap:Envelope>

[CLIENT TRACE] SOAP envelope contents (incoming):

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header>
        <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://www.w3.org/2005/08/addressing/role/anonymous</wsa:To>
        <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://www.w3.org/2005/08/addressing/fault</wsa:Action>
        <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:9ab4845a-7d97-746d-2faf-e68acb554fb4</wsa:MessageID>
        <wsa:RelatesTo RelationshipType="wsa:Reply" xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:0593b5c8-f369-8188-7674-e76599ba8a94</wsa:RelatesTo>
        <wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing">
            <wsa:Address>http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean</wsa:Address>
        </wsa:From>
    </soap:Header>
    <soap:Body>
        <soap:Fault>
            <soap:Code>
                <soap:Value>soap:Sender</soap:Value>
                <soap:Subcode xmlns:wsa="http://www.w3.org/2005/08/addressing">
                    <soap:Value>wsa:DestinationUnreachable</soap:Value>
                </soap:Subcode>
            </soap:Code>
            <soap:Reason>
                <soap:Text>[ID = 'DestinationUnreachable'] There is no resource available at the given EPR:

<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <wsa:Address>http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean</wsa:Address>
</wsa:EndpointReference>

The existing EPRs hosted by this endpoint are:

<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <wsa:ReferenceParameters xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
    <wsa:Address>http://127.0.0.1:8086/WsrServer/services/WsrMEPMBeanFactory</wsa:Address>
</wsa:EndpointReference>
</soap:Text>
            </soap:Reason>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

org.apache.muse.ws.addressing.soap.SoapFault: [ID = 'DestinationUnreachable'] There is no resource available at the given EPR:

<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <wsa:Address>http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean</wsa:Address>
</wsa:EndpointReference>

The existing EPRs hosted by this endpoint are:

<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <wsa:ReferenceParameters xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
    <wsa:Address>http://127.0.0.1:8086/WsrServer/services/WsrMEPMBeanFactory</wsa:Address>
</wsa:EndpointReference>


The log information from server is as following:

10:22:03,342 INFO  [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBos
s_4_2_2_GA date=200710221139)] Started in 1m:27s:229ms
10:22:16,140 ERROR [STDERR] 2009-4-27 10:22:16 org.apache.muse.core.SimpleResour
ce initialize
信息: [ID = 'ResourceInitialized'] The resource at 'WsrMEPMBean' has been initia
lized.
10:22:16,140 ERROR [STDERR] WsrMEPMBeanFactoryImpl.initializeCompleted():: WsrME
PMBean address:http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean
10:22:16,140 ERROR [STDERR] 2009-4-27 10:22:16 com._30wish.www.muse.ManagementSe
rvice.WsrMEPMBeanFactoryImpl initializeCompleted

10:22:16,140 ERROR [STDERR] 2009-4-27 10:22:16 org.apache.muse.core.SimpleResour
ce initialize
信息: [ID = 'ResourceInitialized'] The resource at 'WsrMEPMBeanFactory' has been
 initialized.
10:22:16,140 ERROR [STDERR] 2009-4-27 10:22:16 org.apache.muse.core.routing.Simp
leResourceRouter initialize
信息: [ID = 'RouterIsInitialized'] The resource router has been initialized.


Can anyone tell me what's wrong?

Thanks.

Sara


Re: About use factory to create resource

by SARA1232007 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Chris,

I search the WsrMEPMBean(managed resource) entry using ServiceGroup and found that the WsrMEPMBean has a resourceId with the value MuseResource-1. What I plan is to use the address 'http://127.0.0.1:8086/WsrServer/services/WsrMEPMBean' without resourceId, so I remove the subdirectory 'WsrMEPMBean' under  'router-entries' directory.

Can anyone tell me what else need to be done to access a resource, which generated by a factory, without resourceId?
Also, an another question: what should I do if I want to assign the resourceId value by an another class?

The muse.xml content is as following:

    <router>
        <java-router-class>org.apache.muse.core.routing.SimpleResourceRouter</java-router-class>
        <logging>
            <log-file>log/muse.log</log-file>
            <log-level>FINE</log-level>
        </logging>
        <persistence>
            <java-persistence-class>org.apache.muse.core.routing.RouterFilePersistence</java-persistence-class>
            <persistence-location>router-entries</persistence-location>
        </persistence>
    </router>
    <resource-type>
        <context-path>WsrMEPMBean</context-path>
        <wsdl>
            <wsdl-file>/wsdl/WsrMEPMBean.wsdl</wsdl-file>
            <wsdl-port-type xmlns:pfx="http://www.30wish.com/muse/ManagementService">pfx:WsrMEPMBeanPortType</wsdl-port-type>
        </wsdl>
        <java-id-factory-class>org.apache.muse.core.routing.CounterResourceIdFactory</java-id-factory-class>
        <java-resource-class>org.apache.muse.ws.resource.impl.SimpleWsResource</java-resource-class>
... ...

Thanks.

Sara