My Previous (linked) Query, which I successfully deployed is here:
http://www.nabble.com/JbiProxy-to-invoke-EJB---Couldn%27t-map-prefix-%27ns5%27-to-a-namespace-t1731101.html

My Current problem:
---------------------------

My servicemxix.ml goes like this:
-------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:sm="http://servicemix.apache.org/config/1.0";
            xmlns:eip="http://servicemix.apache.org/eip/1.0";
            xmlns:http="http://servicemix.apache.org/http/1.0";
            xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0";
            xmlns:my="http://servicemix.apache.org/demo";>

  <import resource="classpath:jmx.xml" />

    <sm:container id="jbi" MBeanServer="#mbeanServer" useMBeanServer="true"
        createMBeanServer="true" dumpStats="true" statsInterval="10">

        <sm:activationSpecs>

            <sm:activationSpec componentName="jsrEjbBC"
service="my:jsrEjbBC" endpoint="jsrEjbBC">
                <sm:component>
                    <jsr181:component>
                        <jsr181:endpoints>
                            <jsr181:endpoint annotations="none"
service="my:jsrEjbEP" endpoint="jsrEjbEP"
serviceInterface="com.mike.j2ee.bea.EightOneTwo.BankTransaction.BankBI"
typeMapping="default">
                                <jsr181:pojo>
                                    <bean
class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
                                        <property name="jndiName"
value="com.mike.j2ee.bea.EightOneTwo.BankTransaction.BankHome"/>
                                        <property name="businessInterface"
value="com.mike.j2ee.bea.EightOneTwo.BankTransaction.BankBI"/>
                                        <property name="jndiTemplate">
                                            <ref bean="jndiTemplate"/>
                                        </property>
                                        <property
name="lookupHomeOnStartup">
                                            <value>false</value>
                                        </property>
                                    </bean>
                                </jsr181:pojo>
                            </jsr181:endpoint> 
                        </jsr181:endpoints>
                    </jsr181:component>
                </sm:component>
            </sm:activationSpec>

            <sm:activationSpec componentName="ejbHttpBridge"
service="my:ejbHttpBridge">
                <sm:component>
                    <bean xmlns="http://xbean.org/schemas/spring/1.0";
class="BankEjbHttpBridge" >
                        <constructor-arg ref="jbi"/>
                        <property name="name">
                            <value>1</value>
                        </property>
                    </bean>
                </sm:component>
            </sm:activationSpec>

            <sm:activationSpec> 
                <sm:component> 
                    <http:component> 
                        <http:endpoints> 
                            <http:endpoint  service="my:ejbHttpBridge" 
                                            role="consumer" 
                                            defaultOperation="echo" 
                                           
locationURI="http://localhost:8192/Service/"; 
                                           
defaultMep="http://www.w3.org/2004/08/wsdl/in-out"; 
                                            soap="true"/> 
                        </http:endpoints> 
                    </http:component> 
                </sm:component> 
            </sm:activationSpec> 

        </sm:activationSpecs>
    </sm:container>

    <!-- bean other code goes here 
    </bean -->

</beans>

My EJB Business Interface goes like this:
------------------------------------------------------

public interface BankBI{

    TransactionRes transact(TransactionReq transactionReq) throws
IOException;
}

My Business Interface Java Type params are given below:
------------------------------------------------------------------------------

TransactionReq.java:
----------------------------
public class TransactionReq implements Serializable{

    public TransactionReq(){}

    public TransactionReq(BigInteger accountId, String action, BigDecimal
amount){
        this.accountId = accountId;
        this.action = action;
        this.amount = amount;
    }

    private BigInteger accountId;
    private BigDecimal amount;
    private String action;

    public BigInteger getAccountId(){
        return accountId;
    }
    public void setAccountId(BigInteger accountId){
        this.accountId = accountId;
    }

    public BigDecimal getAmount(){
        return amount;
    }
    public void setAmount(BigDecimal amount){
        this.amount = amount;
    }

    public String getAction(){
        return action;
    }
    public void setAction(String action){
        this.action = action;
    }

    public String toString(){
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer    .append("TxReq-accountId:" + accountId)
                        .append(";amount:" + amount)
                        .append(";action:" + action);
        return stringBuffer.toString();
    }

}

TransactionRes.java:
----------------------------
public class TransactionRes implements Serializable{

    public TransactionRes(){}

    public TransactionRes(BigInteger transactionId, String result,
BigDecimal accountBalance){
        this.transactionId = transactionId;
        this.result = result;
        this.accountBalance = accountBalance;
    }

    private BigInteger transactionId;
    private BigDecimal accountBalance;
    private String result;

    public BigInteger getTransactionId(){
        return transactionId;
    }
    public void setTransactionId(BigInteger transactionId){
        this.transactionId = transactionId;
    }

    public BigDecimal getAccountBalance(){
        return accountBalance;
    }
    public void setAccountBalance(BigDecimal accountBalance){
        this.accountBalance = accountBalance;
    }

    public String getResult(){
        return result;
    }
    public void setResult(String result){
        this.result = result;
    }
    public String toString(){
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer    .append("TxRes-transactionId:" + transactionId)
                        .append(";accountBalance:" + accountBalance)
                        .append(";result:" + result);
        return stringBuffer.toString();
    }

}

The BankEjbHttpBridge.java (ESB Transform component) is as follows:
------------------------------------------------------------------------------------------------

public class BankEjbHttpBridge extends TransformComponentSupport implements
MessageExchangeListener{

    private String name;
    private JBIContainer container;

    public BankEjbHttpBridge(JBIContainer container){

        log("BankEjbHttpBridge.BankEjbHttpBridge(JBIContainer)...");
        this.container = container;
    }

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }

    public Object getProxy(Class interfaceClass){

        log("BankEjbHttpBridge.getProxy...");
        Object proxy = null;
        ComponentContext context = getContext();
        if (context != null) {
            try {
                log("BankEjbHttpBridge.getProxy. Creating XFire...");
                XFire xfire = Jsr181LifeCycle.createXFire(context);
                QName service = new
QName("http://servicemix.apache.org/demo";, "jsrEjbEP");
                log("BankEjbHttpBridge.getProxy. Creating proxy...");
                proxy = (BankBI) JbiProxy.create(xfire, context, null,
service, null, interfaceClass);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return proxy;
    }

    protected boolean transform(MessageExchange exchange, NormalizedMessage
in, NormalizedMessage out) throws MessagingException {

        System.out.println("BankEjbHttpBridge(" + name +
").onMessageExchange01. exchange.getService() = " + exchange.getService());

        NormalizedMessage copyMessage = exchange.createMessage();
        getMessageTransformer().transform(exchange, in, copyMessage);
        Source content = copyMessage.getContent();
        System.out.println("BankEjbHttpBridge(" + name +
").onMessageExchange02. content = " + content);
        String contentString = null;
        if (content instanceof DOMSource){
            contentString = node2XML(((DOMSource) content).getNode());
            System.out.println("BankEjbHttpBridge(" + name +
").onMessageExchange03. contentString = " + contentString);
        }

        //For time being, just invoke proxy.
        //Later, will use JaxB to Unmarshall input XML to Java types.

        BankBI proxy = (BankBI) getProxy(BankBI.class);
        String contentReturnString = transact(proxy);

        out.setContent(new StringSource("<?xml version=\"1.0\"
encoding=\"UTF-8\"?><Return>" + contentReturnString + "</Return>"));
        System.out.println("BankEjbHttpBridge(" + name +
").onMessageExchange07. End");

        return true;
    }

    private String transact(BankBI proxy){

        log("BankEjbHttpBridge.transact...");
        TransactionRes transactionRes = null;
        try{
            transactionRes = proxy.transact(new TransactionReq(new
BigInteger(Integer.toString(1)), "Credit", new BigDecimal(100D)));
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return transactionRes.toString();
    }
}

When I invoked a SOAP HTTP client, the exception I am getting is:
---------------------------------------------------------------------------------------------

D:\mike\com\java\com\mike\esb\ServiceMix\Text\EjbService\02_InvokeThroughEsb>D:\Applns\ServiceM
ix\incubating-servicemix-3.0-SNAPSHOT_2006-05-27\bin\servicemix
servicemix.xml
Apache ServiceMix ESB: 3.0-SNAPSHOT

Loading Apache ServiceMix from file: servicemix.xml
log4j:WARN Continuable parsing error 47 and column 23
log4j:WARN An element with the identifier "FILE" must appear in the
document.
log4j:ERROR No appender named [FILE] could be found.
WARN  - JmxUtils                       - Found more than one MBeanServer
instance. Returning first f
rom list.
BankEjbHttpBridge.BankEjbHttpBridge(JBIContainer)...
INFO  - JBIContainer                   - Activating component for:
[container=ServiceMix,name=#Subsc
riptionManager#] with service: null component:
[EMAIL PROTECTED]
d21
INFO  - ComponentMBeanImpl             - Initializing component:
#SubscriptionManager#
INFO  - DeploymentService              - Restoring service assemblies
INFO  - JBIContainer                   - ServiceMix JBI Container
(http://servicemix.org/) name: Ser
viceMix running version: 3.0-SNAPSHOT
INFO  - JBIContainer                   - Activating component for:
[container=ServiceMix,name=jsrEjb
BC] with service: {http://servicemix.apache.org/demo}jsrEjbBC component:
org.apache.servicemix.jsr18
[EMAIL PROTECTED]
INFO  - ComponentMBeanImpl             - Initializing component: jsrEjbBC
INFO  - JBIContainer                   - Activating component for:
[container=ServiceMix,name=ejbHtt
pBridge] with service: {http://servicemix.apache.org/demo}ejbHttpBridge
component: BankEjbHttpBridge
@10a5c21
INFO  - ComponentMBeanImpl             - Initializing component:
ejbHttpBridge
INFO  - JBIContainer                   - Activating component for:
[container=ServiceMix,name=ID:TVM
KVML19213-2284-1150610962318-0:0] with service: null component:
org.apache.servicemix.http.HttpSprin
[EMAIL PROTECTED]
INFO  - ComponentMBeanImpl             - Initializing component:
ID:TVMKVML19213-2284-1150610962318-
0:0
INFO  - log                            - Logging to
[EMAIL PROTECTED] via org.m
ortbay.log.Slf4jLog
INFO  - log                            - jetty 6.0.0beta15
INFO  - log                            - Started SelectChannelConnector @
localhost:8192
BankEjbHttpBridge(1).onMessageExchange01. exchange.getService() =
{http://servicemix.apache.org/demo
}ejbHttpBridge
BankEjbHttpBridge(1).onMessageExchange02. content =
[EMAIL PROTECTED]
BankEjbHttpBridge(1).onMessageExchange03. contentString = <?xml
version="1.0" encoding="UTF-8"?><m:t
ransact xmlns:m="http://www.mike.com/j2ee/bea/EightOneTwo/BankTransaction";
xmlns:env="http://sch
emas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:xsd
="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><transacti
onReq xmlns:n1="java:com.mike.j2ee.bea.EightOneTwo.BankTransaction"
xsi:type="n1:TransactionReq"
><accountId xsi:type="xsd:integer">1</accountId><action
xsi:type="xsd:string">Credit</action><amount
 xsi:type="xsd:decimal">100</amount></transactionReq></m:transact>
BankEjbHttpBridge.getProxy...
BankEjbHttpBridge.getProxy. Creating XFire...
BankEjbHttpBridge.getProxy. Creating proxy...
BankEjbHttpBridge.transact...
org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested
exception is org.codehau
s.xfire.fault.XFireFault: Error sending jbi exchange
org.codehaus.xfire.fault.XFireFault: Error sending jbi exchange
        at
org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
        at
org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:30)
        at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
        at org.codehaus.xfire.client.Client.invoke(Client.java:360)
        at
org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
        at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
        at $Proxy1.transact(Unknown Source)
        at BankEjbHttpBridge.transact(BankEjbHttpBridge.java:120)
        at BankEjbHttpBridge.transform(BankEjbHttpBridge.java:107)
        at
org.apache.servicemix.components.util.TransformComponentSupport.onMessageExchange(Transfo
rmComponentSupport.java:48)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImp
l.java:564)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:171)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:222)
        at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
        at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.codehaus.xfire.XFireException: Error sending jbi exchange
        at
org.apache.servicemix.jsr181.xfire.JbiChannel.send(JbiChannel.java:121)
        at
org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
        ... 14 more
Caused by: org.codehaus.xfire.fault.XFireFault: Unable to write
'TxReq-accountId:1;amount:100;action
:Credit' [com.mike.j2ee.bea.EightOneTwo.BankTransaction.TransactionReq]
        at
org.codehaus.xfire.aegis.type.basic.ObjectType.handleNullType(ObjectType.java:234)
        at
org.codehaus.xfire.aegis.type.basic.ObjectType.writeObject(ObjectType.java:169)
        at
org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:11
1)
        at
org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:27
5)
        at
org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
        at
org.apache.servicemix.jsr181.xfire.JbiChannel.getContent(JbiChannel.java:142)
        at
org.apache.servicemix.jsr181.xfire.JbiChannel.send(JbiChannel.java:93)
        ... 15 more
ERROR - SedaQueue                      -
[EMAIL PROTECTED]
 got error processing MessageExchange[
  id: ID:TVMKVML19213-2284-1150610962318-4:0
  status: Active
  role: provider
  service: {http://servicemix.apache.org/demo}ejbHttpBridge
  endpoint: ejbHttpBridge
  operation: echo
  in: <?xml version="1.0" encoding="UTF-8"?><m:transact
xmlns:m="http://www.mike.com/j2ee/bea/Ei
ghtOneTwo/BankTransaction"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:soapenc="http
://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http:
//www.w3.org/2001/XMLSchema-instance"><transactionReq
xmlns:n1="java:com.mike.j2ee.bea.EightOneT
wo.BankTransaction" xsi:type="n1:TransactionReq"><accountId
xsi:type="xsd:integer">1</accountId><act
ion xsi:type="xsd:string">Credit</action><amount
xsi:type="xsd:decimal">100</amount></transactionReq
></m:transact>
]
java.lang.NullPointerException
        at BankEjbHttpBridge.transact(BankEjbHttpBridge.java:125)
        at BankEjbHttpBridge.transform(BankEjbHttpBridge.java:107)
        at
org.apache.servicemix.components.util.TransformComponentSupport.onMessageExchange(Transfo
rmComponentSupport.java:48)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImp
l.java:564)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:171)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:222)
        at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
        at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:595)
ERROR - log                            - /Service/:
java.lang.IllegalStateException: Exchange not found
        at
org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:18
3)
        at
org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
        at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:542)
        at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:1
45)
        at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
        at org.mortbay.jetty.Server.handle(Server.java:245)
        at
org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:365)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:290)
        at
org.mortbay.jetty.nio.SelectChannelConnector$HttpEndPoint.run(SelectChannelConnector.java
:740)
        at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:435)
ERROR - log                            - /Service/
java.lang.IllegalStateException: Exchange not found
        at
org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:18
3)
        at
org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
        at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:542)
        at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:1
45)
        at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
        at org.mortbay.jetty.Server.handle(Server.java:245)
        at
org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:365)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:290)
        at
org.mortbay.jetty.nio.SelectChannelConnector$HttpEndPoint.run(SelectChannelConnector.java
:740)
        at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:435)
        
My Assumption:
---------------------

I have to somehow provide a typemapping for my types TransactionReq &
TransactionRes. I am not able to figure out how to do that. Any hints...

Thanks in Advance - Mike.
--
View this message in context: 
http://www.nabble.com/XFireFault%3A-Unable-to-write---How-2-provide-typemapping--t1805648.html#a4920966
Sent from the ServiceMix - User forum at Nabble.com.

Reply via email to