GVKun编程网logo

java – WebSphere 7.从另一个应用程序注入EJB(怎么在一个java里面引用另一个java)

29

本文将介绍java–WebSphere7.从另一个应用程序注入EJB的详细情况,特别是关于怎么在一个java里面引用另一个java的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解

本文将介绍java – WebSphere 7.从另一个应用程序注入EJB的详细情况,特别是关于怎么在一个java里面引用另一个java的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Android – 从另一个应用程序中杀死应用程序(在root设备上)、android – 从另一个应用程序控制应用程序、android – 从另一个应用程序访问资产?、android – 如何在我的WebView应用程序中打开另一个应用程序?的知识。

本文目录一览:

java – WebSphere 7.从另一个应用程序注入EJB(怎么在一个java里面引用另一个java)

java – WebSphere 7.从另一个应用程序注入EJB(怎么在一个java里面引用另一个java)

我试图用@EJB注释注入EJB:

>当我将EJB注入到同一个耳朵中的另一个EJB中时,它工作正常.
>当我将EJB从另一个耳朵注入到另一个EJB中时
服务器我得到一个例外:

EJB threw an unexpected (non-declared) exception during invocation of
method “sayHello”. Exception data: javax.ejb.EJBException: Injection
failure; nested exception is:
com.ibm.ejs.container.EJBNotFoundException: EJB with interface
com.mycompany.myapp.ejb.test2 not present in application myapp1

我正在使用WebSphere 7和EJB 3.0.当我自己做一个jndi查找,它工作正常.如何让容器知道从哪里注入远程bean?

myapp1.ear包含以下内容:myapp1.jar(EJB在哪里)

myapp1 EJB:

package com.mycompany.myapp1.ejb.test1;

@Remote
public interface HelloEjb1 { 
    public String sayHello();
}

EJB Impl:

package com.mycompany.myapp.ejb.test1;

@Stateless
public class HelloEjbImpl1 implements HelloEjb1 {

    @EJB
 HelloEjb2 helloEjb2;

    @Override
    public String sayHello() {
        return HelloEjb2.sayHello();
    }
}

myapp2.ear包含以下内容:myapp2.jar(EJB在哪里)

myapp2 EJB:

package com.mycompany.myapp2.ejb.test2;

@Remote
public interface HelloEjb2 { 
    public String sayHello();
}

EJB Impl:

package com.mycompany.myapp2.ejb.test2;

@Stateless
public class HelloEjbImpl2 implements HelloEjb2 {

    @Override
    public String sayHello() {
        return "Hello";
    }
}

解决方法

在部署应用程序( 1,2)时指定绑定,或在客户端(myapp1)EJB模块中包含 META-INF/ibm-ejb-jar-bnd.xml.它看起来像这样:
<ejb-jar-bnd
    xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
    version "1.0">
  <session name="HelloEjbImpl1">
    <ejb-ref name="com.mycompany.myapp.ejb.test1/helloEjb2"
        binding-name="myapp2/myapp2.jar/HelloEjbImpl2#com.mycompany.myapp1.ejb.test1.HelloEjb1"
  </session>  
</ejb-jar-bnd>

如果使用@EJB(name =“myrefname”),则可以简化ejb-ref name =“…”.如果您的myapp2.jar包含与< interface class =“...”binding-name =“...”/>的类似绑定文件,则可以简化绑定名称.元件.

Android – 从另一个应用程序中杀死应用程序(在root设备上)

Android – 从另一个应用程序中杀死应用程序(在root设备上)

我有一个扎根的Android设备.有一次,我从我的主应用程序启动了一个辅助应用程序,如下所示:

Intent intent = getPackageManager().getLaunchIntentForPackage("com.app.package");
startActivityForResult(intent, 100);

我希望能够从主应用程序中删除此辅助应用程序.我正在尝试以下一般程序:

// At an earlier point in time...
Runtime.getRuntime().exec("su");
// The user grants permission

// ...

// At a later point in time...
Runtime.getRuntime().exec("su am force-stop com.app.package");

不幸的是,这并没有杀死应用程序,没有提示为什么来自logcat.

如果我尝试将kill命令作为“am force-stop com.app.package”而不是“su am force-stop com.app.package”运行,则logcat说我没有权限,即使我有超级用户早先运行“su”的许可.

解决方法:

找到了解决方案:

Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getoutputStream());

os.writeBytes("adb shell" + "\n");

os.flush();

os.writeBytes("am force-stop com.xxxxxx" + "\n");

os.flush();

android – 从另一个应用程序控制应用程序

android – 从另一个应用程序控制应用程序

我读了this question和another question,我理解如何从另一个应用程序启动一个应用程序(让我们调用另一个应用程序LauncherApplication).但是,我的目标不仅是启动一个应用程序,而是使用它的功能,所以我认为LauncherApplication应该使用intent(显式或隐式)启动一个活动.

我应该知道已安装的应用程序所做的数据和操作,我应该在启动之前将这些信息添加到intent实例中.我希望LauncherApplication允许用户(而不是开发人员)配置此意图,但我如何提前知道要为已安装的应用程序设置意图的参数?

我应该实现“LauncherApplication *”,以便允许用户通过图形界面构建一个intent.或者我可以让我的应用程序支持添加插件:这样,我可以为每个已安装的应用程序创建一个插件,其中每个插件可能负责管理与其关联的应用程序的意图配置.

更新(添加详细信息).特别是,LauncherApplication应该是一个启用了语音识别器的服务,因此用户可以启动一个发出特定关键字的应用程序:以及启动一个应用程序,用户应该能够关闭它并使用它的功能.

例如,我可以安装一个应用程序((我们称之为LibraryApp)来搜索库中的可用书籍;该应用程序可以具有以下功能:

>搜索一本书(如果该书可用,它已经被借出或者是由其他人预订的,则该功能可能会返回).
>预订一本书(此功能应该返回完成预订).

这样,当我发出单词“start LibraryApp”时,LauncherApplication服务应该启动LibraryApp应用程序.启动应用程序后,服务应该能够向其发送命令以使用其中一个可用功能(搜索书籍,预订书籍).

如何将命令发送到已经处于活动状态的应用程序,以便对其进行控制?

解决方法:

how do I kNow in advance the parameters to put in an intent for the installed applications?

你和他们的开发者交谈.在Intent上通常没有“参数”来启动应用程序的启动器活动(或活动),因为主屏幕不会在Intent上放置这样的“参数”.

android – 从另一个应用程序访问资产?

android – 从另一个应用程序访问资产?

我在我的应用程序中收到了很多请求,允许使用BetterCut / Open Home中的自定义图标包.它似乎工作的方式是你安装BetterCut或Open Home,然后你可以从市场上安装大量这些免费的图标包.安装完成后,这些应用程序(和其他应用程序)将轮询这些图标包并使用图标.

我想知道如何轮询安装应用程序以查找可用的资产文件夹.我已经打开了一些图标包并验证了那里有一个资产文件夹,它们充满了所有的图标png文件.

我在这里搜索,其他代码网站,谷歌等,但没有找到任何线索.

更新:

从下面的答案我已经编写了一些代码来尝试从我自己的项目资产目录中列出一个文件,但它似乎不起作用.

Resources r = this.getResources();
AssetManager a = r.getAssets();
String[] list = a.list("/");
Log.d("test","Length of / is "+list.length);
for (String s : list) {
    Log.d("test",s);
}

Log.d("test","Length of /assets is "+a.list("/assets").length);
Log.d("test","Length of /assets/ is "+a.list("/assets/").length);
Log.d("test","Length of ./assets/ is "+a.list("./assets/").length);
Log.d("test","Length of ./assets is "+a.list("./assets").length);

这是输出:

03-16 12:25:04.591: DEBUG/test(13526): Length of / is 6
03-16 12:25:04.591: DEBUG/test(13526): AndroidManifest.xml
03-16 12:25:04.591: DEBUG/test(13526): meta-inf
03-16 12:25:04.591: DEBUG/test(13526): assets
03-16 12:25:04.591: DEBUG/test(13526): classes.dex
03-16 12:25:04.591: DEBUG/test(13526): res
03-16 12:25:04.591: DEBUG/test(13526): resources.arsc
03-16 12:25:04.614: DEBUG/test(13526): Length of /assets is 0
03-16 12:25:04.637: DEBUG/test(13526): Length of /assets/ is 0
03-16 12:25:04.661: DEBUG/test(13526): Length of /assets/ is 0
03-16 12:25:04.692: DEBUG/test(13526): Length of ./assets/ is 0
03-16 12:25:04.716: DEBUG/test(13526): Length of ./assets is 0

更新2 99%那里!!!:

我发现你可以从assets目录中读取而不实际使用文件夹名称:

InputStream is = assetManager.open("test.png");

我还尝试使用应用程序1中的应用2中的资源,其中文件夹路径为/asset/icon/image.png:

InputStream is = assetManager.open("icon/image.png");

接下来我发现你可以在资产中列出一个目录:

String[] list = assetManager.list("icons");

这也很有效.现在唯一失败的是如何列出基本目录资产.

解决方法

要获取base / assets文件夹,您需要使用AssetsManager列出仅带引号的目录:
AssetManager am = this.getAssets();
String[] names = am.list("");

将列出一些其他文件:图像,声音,webkit,也许还有其他文件.您可以忽略这些目录,它们是框架资产目录的一部分.这是groups.google.com的引用:

Currently the asset manager merges the
asset directory from the framework
resources along with your own files
placed in “assets”. We should
probably change this behavior (it was
part of an old resource/ localization
model),but it doesn’t do much damage
except that you see more
files/directories in your own assets
than you might expect. Any of your
files that are the same as one in the
framework assets will be used instead,
when accessed through your
AssetManager.

您还可以在assets目录中列出子文件夹,不需要任何斜杠:

String[] names= am.list("subfolder");

请注意,我没有在文件名中包含“/ assets”.
最后,一旦有了文件列表,就可以加载它们:

InputStream in = am.open("file.png");

这将加载到基础资产文件夹中的文件中.或者您可以在子文件夹中加载文件,如下所示:

InputStream in = am.open("subfolder/file.png");

如果您需要将这些png加载到位图中,您还可以执行以下操作:

Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

android – 如何在我的WebView应用程序中打开另一个应用程序?

android – 如何在我的WebView应用程序中打开另一个应用程序?

我有一个Android应用程序,它显示一个移动网站(WebView),在移动网站上有链接重定向到PDF,Excel和视频文件.
当我尝试在我的常规浏览器中打开它时,我的手机要求用另一个应用程序打开它或者它开始下载,所以我可以在之后打开它.

但是在我的WebView应用程序中,它既不起作用,也没有响应,或者显示“页面不可用”错误.

它甚至可能吗?

解决方法:

要在WebView中处理链接,可以使用WebViewClient类的shouldOverrideUrlLoading方法.考虑以下示例;

   WebView webView = (WebView) findViewById(R.id.infoView);

   webView.setWebViewClient(new WebViewClient() {

            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                // Assuming you are giving link to some PDF file.
                if (url.contains(".pdf")) {
                    // Now do what you want to with the url here
                }

                return true;
            }
    }

这样,您可以拦截在WebView中点击的任何链接,然后执行您想要的任何操作.

今天关于java – WebSphere 7.从另一个应用程序注入EJB怎么在一个java里面引用另一个java的分享就到这里,希望大家有所收获,若想了解更多关于Android – 从另一个应用程序中杀死应用程序(在root设备上)、android – 从另一个应用程序控制应用程序、android – 从另一个应用程序访问资产?、android – 如何在我的WebView应用程序中打开另一个应用程序?等相关知识,可以在本站进行查询。

本文标签: