xxb2sq 2018-12-17 12:42 采纳率: 0%
浏览 390

发布一个EJB个体TUXEDO调用

现在在做一个项目需要通过weblogic发布Ejb项目,用WTC的方式与Tuxedo
服务端做交互,WTC配置已经配置完毕,目前通过wtc调用tuxedo已经完成,但是怎么才能发布Ejb让tuxedo来调用,一直搞不定,有几个问题待解决:
1、这个EJB如何定义?网上看到很多类似下面代码:

package net.jqsoft.rmi.server;

import javax.ejb.SessionBean;

import net.jqsoft.rmi.util.RmiFml;
import weblogic.ejb.GenericSessionBean;
import weblogic.ejbgen.RemoteMethod;
import weblogic.wtc.jatmi.TPServiceInformation;
import weblogic.wtc.jatmi.TypedFML32;

public class LocalServerImplEjb extends GenericSessionBean implements
        SessionBean {

    private static final long serialVersionUID = 1L;

    public void ejbCreate() {
        System.out.println("Create EJB");
    }

    @RemoteMethod()
    public String service(TPServiceInformation inData) throws Exception {
        System.out.println("=====tuxedo call wtc=======");
        // 1、获取传入的数据,转型要根据调用时传入的类型
        TypedFML32 sourceFML = (TypedFML32) inData.getServiceData();
        // 2、获取具体字段值,
        // 需要注意TypedFML32的取值方法Fget的第一个参数要与调用时定义的一致
        System.out.println(sourceFML.Fget(RmiFml._INPUT, 0));

        return sourceFML.Fget(RmiFml._INPUT, 0).toString();
    }
}

这种方式是否需要配置ejb-jar.xml、weblogic-ejb-jar.xml?具体如何配置?

2、ejb-jar.xml、weblogic-ejb-jar.xml 这两个文件在EJB项目的哪个目录下才能生效?最好是能给详细一点的解释

3、图片说明
tuxedo服务端那边要求做这个配置,不太理解这个配置的作用

希望有对这方面熟悉的大神给知道一二,最好是能加我QQ:1981733759,若能解决这个难题,会给予一定的酬劳,感谢!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 11:19
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    首先,让我们讨论一下EJB和Tuxedo之间的通信方式。EJB(Enterprise JavaBeans)是Java EE中的组件,用于提供企业级应用的功能。Tuxedo是一个面向对象的分布式计算平台,它提供了各种服务,包括远程过程调用(RPC)。EJB可以作为Tuxedo的一个客户端,从而使用Tuxedo提供的服务。

    1. 如何定义EJB

    对于EJB的定义,通常的做法是在net.jqsoft.rmi.server包中定义EJB类。这里有一个简单的例子:

    package net.jqsoft.rmi.server;
    
    import javax.ejb.SessionBean;
    
    public class MyEjbBean implements SessionBean {
        public void ejbCreate() {
            System.out.println("Create EJB");
        }
    
        @RemoteMethod
        public String myService(String input) {
            return "Hello, " + input;
        }
    }
    

    在这个例子中,我们定义了一个名为MyEjbBean的EJB类,并实现了SessionBean接口。@RemoteMethod注解指示这是一个远程方法,它的名称是myService,并接受一个字符串输入参数input

    2. 配置EJB-JAR.xml和weblogic-ejb-jar.xml

    这两个XML文件通常位于EJB项目的根目录下。EJB-JAR.xml主要用于指定EJB类的位置和属性,而weblogic-ejb-jar.xml则用于配置JAX-RPC服务器。

    如果你正在使用Tuxedo进行远程调用,那么你可能不需要这些文件。因为Tuxedo本身支持远程调用,无需额外的配置。

    3. Tuxedo服务端配置

    Tuxedo服务端通常包含以下配置文件:

    • siconfig.xml: 用于配置本地服务,例如你的中心服务。
    • wtdomains.xml: 用于配置域,比如你的WTCDOMAIN。
    • services.xml: 用于配置服务,比如你的中心服务。
    • serviceinfo.xml: 用于配置服务信息,例如你的中心服务。

    如果你想要使用Tuxedo进行远程调用,你需要确保Tuxedo服务端能够访问到这些配置文件。

    4. 省直配置示例

    siconfig.xml文件中,你可以添加以下内容以配置你的中心服务:

    <HOSTS>
      <HOST areaCode="340000">
        <cityNanle>省直</cityNanle>
        <cityCode>340000</cityCode>
        <cityHost>10.88.32.22</cityHost>
        <cityPort>9001</cityPort>
        <webServer>eapdomain</webServer>
        <userName>admin</userName>
        <password></password>
        <Action>SiInterfaceAction</Action>
        <method>siInterface</method>
      </HOST>
    </HOSTS>
    
    <cityParams>
      <cityParam areaCode='340000'>
        <parameter>inputData</parameter>
        <value>yourInputValue</value>
      </cityParam>
      
      <!-- 更多的城市参数 -->
    </cityParams>
    

    这里的<cityHost>元素用于设置你的中心服务的IP地址和端口号。其他元素分别对应于城市的信息,如城市名称、区域代码等。

    请注意,上述示例中的数据应替换为你实际需要传递的参数值。

    总结

    为了成功部署EJB并与Tuxedo进行交互,你需要确保你的EJB实现正确地定义了远程方法,并且Tuxedo服务端能够访问到相关的配置文件。此外,还可能需要调整一些参数或配置,以便Tuxedo能够正确处理你的远程请求。

    评论

报告相同问题?