我已经看到很多关于maven.multiModuleProjectDirectory在SO和Maven邮件列表上设置env参数的讨论,但是我无法准确理解这个设置的用途.
我搜索了谷歌,专家网站,文档等,但似乎找不到实际解释这个参数是什么,或如何利用它的参考.
任何人都可以解释它的目的和/或指向我的文档吗?它引入了哪个版本的maven?
我正在阅读Auth0网站上有关刷新令牌和SPA的文档,它们指出SPA不应使用刷新令牌,因为它们不能安全地存储在浏览器中,而应使用静默身份验证来检索新的访问令牌。
单页应用程序(通常实现隐式授予)在任何情况下都不应获得刷新令牌。这样做的原因是该信息的敏感性。您可以将其视为用户凭据,因为“刷新令牌”使用户可以永远保持身份验证。因此,您不能在浏览器中拥有此信息,必须将其安全地存储。
我糊涂了。据我了解,检索新访问令牌的唯一方法是将新请求以及某种形式的Auth0会话cookie提交给Auth服务器,以对登录的用户进行身份验证。收到会话cookie时,Auth0然后,服务器将能够发出新的访问令牌。
但是,与在浏览器或本地存储中具有刷新令牌有什么不同?是什么使会话Cookie比刷新令牌更安全?为什么在SPA中使用刷新令牌是一件坏事?
在 JEE/CDI 的上下文中,当我需要从方法中静态检索 CDI 托管 bean 时,我发现自己通常使用 CDI 静态函数。例如:
MyBean myBean = CDI.current().select( MyBean.class ).get()
Run Code Online (Sandbox Code Playgroud)
但是,据我所知,实现此目的的另一种等效方法是使用 BeanManager:
BeanManger bm = new InitialContext().lookup( "java:comp/BeanManager" );
Bean<?> bean = bm.resolve(bm.getBeans( MyBean.class ) );
CreationalContext<?> context = bm.createCreationalContext(bean);
MyBean myBean = bm.getReference(bean, cls, context);
Run Code Online (Sandbox Code Playgroud)
那么除了使用该CDI.current()方法编写的代码显着减少之外,使用它还有什么区别?似乎恢复使用BeanManager是一种更复杂(并且可能容易出错?)的方法。从功能的角度来看,使用该CDI.current()方法有什么缺点吗?是否CDI...select()只有一个工作@ApplicationScope豆?或者我也可以与其他作用域 bean(例如:)一起使用@Dependent吗?
我记得使用 CDI 方法阅读了一些关于潜在内存泄漏的内容,但不明白如何或为什么会出现这种情况。
我对JAXB和验证都不熟悉,并花了几个小时试图弄清楚这个问题无济于事.我创建了一个简单的JAXB unmarshaller示例来解析XML文件.我也创建了一个合适的XSD文件,但验证器一直在抱怨它无法找到元素的声明.
我认为它可能与命名空间问题有关,但我已经尝试了我能想到的一切,但似乎仍无法解决错误.据我所知,我的XSD和XML是正确的,所以它可能与我实例化unmarshaller的方式有关,但我似乎无法在任何地方找到问题.
我一直得到的错误/异常是:
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'calculateBorrowingDataResponse'.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
at org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:85)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:47)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:113)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:236)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:119)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:102)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:299)
... 2 more
Run Code Online (Sandbox Code Playgroud)
以下是导致错误的源文件.
Java代码:
// We need a Document
InputStream is = UnmarshalTest.class.getClassLoader().getResourceAsStream("calculateBorrowingDataResponse.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Node node = db.parse(is);
// Creating an unmarshaller …Run Code Online (Sandbox Code Playgroud) 我有一个bean,其业务逻辑从ApplicationContext加载某种类型的bean,以便处理它们.
对于我的jUnit测试,我想在我的单元测试类中创建一些虚拟bean,看看我的测试中的bean是否正确处理它们.但是,我不确定实现这一目标的最佳方法是什么.
如果我只是在我的测试类中声明我的内部类,Spring将不会将它作为其应用程序上下文的一部分.我意识到我可以在我的jUnit类中注入我的应用程序上下文,然后使用appContext.registerPrototype()来添加它,但是,我认为可能有一种更清晰的方式使用注释.
我试图用@Component注释内部类,但不出意外,它没有用.
public class PatchEngineTest extends TestBase {
@Component
protected class Patch1 extends PatchBaseImpl implements Patch{
public void applyPatch() throws Exception {
// does nothing
}
}
@Autowired PatchRepository patchRepository;
@Autowired Patch1 patch1;
@Test
public void test() {
fail("Not yet implemented");
}
}
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,我收到以下错误消息:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ia.patch.PatchEngineTest$Patch1] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我有点困惑AspectJ编译器如何ajc工作.据我所知,在谈论CTW时,ajc用于将方面编织到编译的字节码中 - 即:.class文件.
但是,当我查看AspectJ(aspectj-maven-plugin)的maven-plugin时,事实证明它是在generate-sourcesmaven阶段运行,在javac编译器之前.这意味着编译器在编织方面之后运行.这是有道理的,因为你可以编织ITD,修改类成员等,java编译器需要知道这些,以便编译任何依赖类.
因此,如果是这种情况,并ajc在javac之前运行,我认为ajc必须首先将所有java代码编译成字节代码才能在任何方面编织.
所以问题是,如果ajc已经经历了将所有java代码编译成字节代码的努力,为什么javac甚至需要运行呢?为什么不是ajc唯一需要的编译器?是不是两个都只是重复努力?另外,如何javac处理ajc已编译的类?是否只是忽略它们,因为自生成.class文件以来源文件没有变化?
我有点困惑如何使用bower将我的应用程序更新为AngularJS的最新beta版本.我目前在我的应用程序中使用Angular 1.2.21.
bower.json:
"dependencies": {
"jquery": "1.11.1",
"underscore": "~1.6.0",
"angular": "~1.2.21",
"angular-route": "~1.2.21",
"angular-resource": "~1.2.21",
"angular-cookies": "~1.2.21",
"angular-sanitize": "~1.2.21",
"angular-mocks": "~1.2.21",
"angular-moment": "~0.8.0",
"moment": "2.7.0",
"angular-xeditable": "~0.1.8",
"font-awesome": "~4.1.0",
"angular-bootstrap-datetimepicker": "~0.2.4",
"blueimp-file-upload": "~9.7.0",
"bootstrap-sass-official": "v3.2.0+1",
"angular-deferred-bootstrap": "~0.1.3",
"angular-bootstrap": "~0.11.0",
"moment-timezone": "~0.2.1"
},
Run Code Online (Sandbox Code Playgroud)
从其他SO帖子中,我意识到我能做到:
bower install angular#1.3.0-beta.18
Run Code Online (Sandbox Code Playgroud)
这将安装最新的角度.但是我如何确保我总是拥有最新的?如果我指定的话~1.3.0-beta.18,bower也会选择每个版本,而不仅仅是我做的时候的beta版本bower update.
有没有办法指定我只想要编号的beta版本而不是中间版本?同样,我希望bower在发布时更新为RC,并在发布时发布完整的1.3.0版本.
如何将角度升级到1.3.0 beta版以及所有依赖它的软件包?
我正在尝试使用exec-maven-plugin集成第三者Java API的方法。我正在使用exec:java目标来调用我的Java主类。我需要解析API的输出,但是在允许此操作的插件中看不到任何特定的东西。
Maven和/或exec-maven-plugin中有没有一种方法可以捕获/保存执行的输出?
Java中是否有指定其他信任库的方法,但如果在指定的信任库中找不到匹配的证书,则java默认为cacerts?我希望能够在几个应用程序中创建一个包含一些我需要的基本证书的信任库,但无需单独更新每个jre的cacerts文件.
我意识到我可以扩展cacerts文件(即:复制并添加到它),但我宁愿拥有一个只有我的附加证书的中央信任库.
我确实发现这个问题已经问过了,但是已经有好几年了,我不知道Java 7,8或9是否已经解决了这个问题.
我发现的所有文档都指向使用javax.net.ssl.trustStore并将其指向我的新信任库,但这将忽略我的cacerts中的所有内容.
如果我指向我的密钥库javax.net.ssl.keyStore,那么我就不能拥有特定于应用程序的密钥库.
理想情况下,我希望能够为java迭代创建一个信任库列表.
Java 7+中是否存在这种情况?
有没有办法在 Maven 中使用属性的子字符串来激活配置文件?我希望使用 Jenkins 将分支名称简单地传递到我的构建,并激活一个配置文件(如果它是 release/* 分支)。
有什么方法可以像这样进行参数操作以激活配置文件?前任:
<profiles>
<profile>
<id>appserverConfig-dev</id>
<activation>
<property>
<name>branch</name>
<!-- some form of wildcarding or regex on the parameter value ??? -->
<value>release/.*</value>
</property>
</activation>
<properties>
<appserver.home>/path/to/dev/appserver</appserver.home>
</properties>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
或者是否有更好的方法可以用来仅在构建来自发布分支时激活配置文件?
java ×6
maven ×3
cdi ×2
access-token ×1
angularjs ×1
aop ×1
aspectj ×1
autowired ×1
bower ×1
jakarta-ee ×1
javac ×1
jaxb ×1
jenkins ×1
oauth-2.0 ×1
spring ×1
ssl ×1
truststore ×1
upgrade ×1
validation ×1