小编and*_*avt的帖子

无法在'HTMLMediaElement'上执行'play':API只能由用户手势启动

我正在制作一个音乐播放页面,我将SoundManager 2用于AngularJs.我正在使用远程API来播放歌曲URL.我增强了一个angular-soundmanager2点击事件处理程序:

element.bind('click', function () {
    if (angular.isFunction(scope.loadFunction)) {
        scope.loadFunction(scope.song, function () {
            $log.debug('adding song to playlist');
            addToPlaylist(scope.song.playDetails);

        })
    } else {
        $log.debug('adding song to playlist');
        addToPlaylist(scope.song);
    }
});
Run Code Online (Sandbox Code Playgroud)

我添加了一个部分,调用scope.loadFunction(song,callback)此函数并加载一个歌曲URL后,它调用一个回调来将控制权交给angular-soundmanager2.

问题是在chrome for android上我得到一个错误:

Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.
Run Code Online (Sandbox Code Playgroud)

如果歌曲从头开始并且未使用异步加载,则不会发生这种情况.

它有什么变通方法吗?

javascript android google-chrome soundmanager2 angularjs

24
推荐指数
1
解决办法
2万
查看次数

在Weblogic 12.1.1上使用Jersey 2.x Web服务

我正在尝试将Jersey 2.13 Web服务部署到Weblogic 12.1.1.此版本的weblogic符合JSR-311 JAX-RS 1.1规范,而Jersey 2.x则提供JAX-RS 2.0的实现

Oracle有关于如何升级Jersey JAX-RS RI版本的说明:http: //docs.oracle.com/cd/E24329_01/web.1211/e24983/version.htm

但是,即使这样也无法解决所有部署问题.

我将应用程序打包在包含WAR的EAR中.为了覆盖我已经包含的weblogic jar,我添加了以下weblogic-application.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
  <prefer-application-packages>
    <!-- apis -->
    <package-name>javax.ws.rs.*</package-name>
    <!-- guava -->
    <package-name>com.google.common.*</package-name>
    <!-- jersey1 providers -->
    <package-name>com.sun.jersey.*</package-name>
    <!-- media providers -->
    <package-name>org.eclipse.persistence.jaxb.rs.*</package-name>
    <package-name>org.codehaus.jackson.jaxrs.*</package-name>
    <!-- wls -->
    <package-name>weblogic.jaxrs.api.client.*</package-name>
    <package-name>weblogic.jaxrs.internal.api.client.*</package-name>
    <package-name>weblogic.jaxrs.dispatch.*</package-name>
    <package-name>weblogic.jaxrs.monitoring.util.*</package-name>

   </prefer-application-packages>
</weblogic-application>
Run Code Online (Sandbox Code Playgroud)

此配置在部署时给出以下错误消息:

Caused By: java.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.create(Ljava/lang/String;Lorg/glassfish/hk2/api/ServiceLocator;Lorg/glassfish/hk2/extension/ServiceLocatorGenerator;Lorg/glassfish/hk2/api/ServiceLocatorFactory$CreatePolicy;)Lorg/glassfish/hk2/api/ServiceLocator;
Run Code Online (Sandbox Code Playgroud)

如果我试图通过将它添加到prefer-application-packages来替换org.glassfish.hk2.*类,我会收到新的错误并且它会一直持续......

有没有人将Jersey迁移到weblogic 12.1.1或更低版本的2.x版本?

谢谢!

java web-services weblogic jax-rs jersey

6
推荐指数
3
解决办法
1万
查看次数

java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map; 将jersey ws部署到Weblogic时

我正在Weblogic 12上部署Web服务应用程序.该应用程序使用jersey,因此依赖于javax.ws.rs-api:2.0.1库.

但是,当我将其部署到服务器时,我有以下错误:

Caused By: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:304)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:285)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    at javax.servlet.GenericServlet.init(GenericServlet.java:240)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:337)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:288)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
...
Run Code Online (Sandbox Code Playgroud)

我认为weblogic可能有自己的javax.ws.rs.core.Application版本,它没有这个getProperties()方法.我将应用程序打包在WAR文件中并尝试使用

  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
Run Code Online (Sandbox Code Playgroud)

weblogic.xml中,明确告诉Weblogic使用此库的2.0.1版本.

到目前为止没有任何帮助,问题仍然存在..

谢谢.

java web-services weblogic jax-rs jersey

5
推荐指数
1
解决办法
1万
查看次数

Jersey 2将依赖注入单元测试

我有这样的控制器

@Path("/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class AccountController implements CRUDController<Long, Account> {

    private AccountDao accountDao;
    private AccountService accountService;

    @Inject
    public AccountController(AccountDao accountDao, AccountService accountService) {
        this.accountDao = accountDao;
        this.accountService = accountService;
    }
...
Run Code Online (Sandbox Code Playgroud)

我正在使用注入AccountDao和AccountService

ResourceConfig config = new ResourceConfig()
               .packages("controller", "exception")
               .register(new MyDIBinder());
Run Code Online (Sandbox Code Playgroud)

MyDIBinder包含所有绑定的地方(例如

AccountDaoImpl accountDaoImpl = new AccountDaoImpl();
bind(accountDaoImpl).to(AccountDao.class);
Run Code Online (Sandbox Code Playgroud)

)

现在我想为这个控制器编写一个单元测试,是否可以将整个AccountController实例及其所有传递依赖项注入测试?

就像是

    @Inject
    AccountController accountController;
Run Code Online (Sandbox Code Playgroud)

java unit-testing dependency-injection jersey jersey-2.0

3
推荐指数
1
解决办法
2627
查看次数

列出 SNAPSHOT 依赖项

是否有插件或任何其他方式来列出项目的 SNAPSHOT 依赖项?我只需要这些依赖项的名称及其版本(例如 org.my.company:1.1.1-SNAPSHOT)

release pom.xml maven

1
推荐指数
1
解决办法
3482
查看次数

AngularJs $ watch throws无法读取null的属性'replaceChild'

我创建了一个如下所示的指令:

app.directive('superDir', function ()
{
    function link(scope, element, attrs) {
        scope.$watch('elements', function (value, old)
        {
            element.replaceWith(scope.elements.join(""))
        },true);
    }

    return {
        link: link
    };
});
Run Code Online (Sandbox Code Playgroud)

然而,elements数组被修改并被$watch触发我收到一个异常:

Cannot read property 'replaceChild' of null
Run Code Online (Sandbox Code Playgroud)

html看起来像这样:

<body ng-app="myApp">
<div ng-controller="MainCtrl">
  <super-dir></super-dir>
</div>
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么不能更换super-dir标签吗?

谢谢

javascript angularjs angularjs-directive

0
推荐指数
1
解决办法
1931
查看次数