我正在制作一个音乐播放页面,我将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)
如果歌曲从头开始并且未使用异步加载,则不会发生这种情况.
它有什么变通方法吗?
我正在尝试将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版本?
谢谢!
我正在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版本.
到目前为止没有任何帮助,问题仍然存在..
谢谢.
我有这样的控制器
@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) 是否有插件或任何其他方式来列出项目的 SNAPSHOT 依赖项?我只需要这些依赖项的名称及其版本(例如 org.my.company:1.1.1-SNAPSHOT)
我创建了一个如下所示的指令:
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标签吗?
谢谢
java ×3
jersey ×3
angularjs ×2
javascript ×2
jax-rs ×2
web-services ×2
weblogic ×2
android ×1
jersey-2.0 ×1
maven ×1
pom.xml ×1
release ×1
unit-testing ×1