我的任务是在工作中使用Web门户应用程序.
我从eclipse获得了预先存在的项目文件夹副本.我无法让它运行.
我正在尝试设置本地服务器并在本地进行开发,然后将其移动到生产服务器.
对于我的服务器,我已经设置了WebSphere Application Server V8.5.5 Liberty Profile.我创建了一个"Hello World"项目,以确保它正常工作.它是.
当我尝试右键单击项目并选择Run As - > Run on Server ...时,我看到以下内容:
我不确定这是否有帮助,但这里有Project Facets:
当前软件:
我是Bluemix的新手,是按照以下步骤创建应用程序的一部分:
我收到以下错误:
BXNUI2032E:联系Cloud Foundry创建资源时发生错误.资源:路线.Cloud Foundry消息:"主持人被采取:vTest." 请参阅IBM Bluemix文档中的故障排除主题以检查服务状态,查看故障排除信息或获取有关获取帮助的信息.
提前致谢
使用WebSphere Liberty Profile(版本2013.11.0.0 - 8.5.5.Next Alpha和扩展内容)启动我的应用程序时,会出现很多警告:
W SRVE9967W: The manifest class path dhbcore.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: The manifest class path jms.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: The manifest class path com.ibm.mq.jmqi.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: The manifest class path dhbcore.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: …
Run Code Online (Sandbox Code Playgroud) 我似乎无法在本地工作,即使相同的 WAR 在远程服务器上工作。当我在本地访问我的应用程序时,出现“找不到上下文根”错误。Liberty 配置文件版本为 8.5.5.5。
以下是相关文件:
服务器.xml
<?xml version="1.0" encoding="UTF-8"?>
<server description="tlc server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>ssl-1.0</feature>
<feature>localConnector-1.0</feature>
<feature>restConnector-1.0</feature>
<feature>json-1.0</feature>
<feature>jaxrs-1.1</feature>
<feature>servlet-3.0</feature>
<feature>jpa-2.0</feature>
<feature>beanValidation-1.0</feature>
<feature>jndi-1.0</feature>
<feature>jdbc-4.0</feature>
<feature>monitor-1.0</feature>
</featureManager>
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443" virtualHost="default_host" />
<jdbcDriver id="DerbyJDBCDriver">
<library name="DerbyLib">
<fileset dir="C:\tools\servers\wlp\lib" includes="derbyclient-10.6.1.0.jar" />
</library>
</jdbcDriver>
<dataSource jndiName="jdbc/TLCDataSource" id="derbyDataSource" jdbcDriverRef="DerbyJDBCDriver">
<properties.derby.client databaseName="TLC" password="APP" user="APP" />
</dataSource>
<applicationMonitor updateTrigger="mbean" />
<application id="TLC_war" context-root="/TLC" location="C:\Users\nd26434\gitrepos\tlc\target\TLC-1.0.0-SNAPSHOT.war" name="TLC_war" type="war">
<classloader delegation="parentLast">
<privateLibrary>
<fileset dir="C:\tools\servers\wlp\lib" includes="aspectjweaver-1.8.0.jar" />
</privateLibrary>
</classloader>
</application>
</server>
Run Code Online (Sandbox Code Playgroud)
消息日志
[3/18/15 …
Run Code Online (Sandbox Code Playgroud) 我试图从EJB调用REST服务,希望利用Jackson的
@JsonIgnoreProperties(ignoreUnknown = true)
Run Code Online (Sandbox Code Playgroud)
以下是wlp v8.5.5.9中的技巧
Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);
Run Code Online (Sandbox Code Playgroud)
相同的代码NullPointerException
在wlp v16.0.0.2中生成a
Caused by: java.lang.NullPointerException
at org.apache.cxf.jaxrs.impl.tl.ThreadLocalProviders.getContextResolver(ThreadLocalProviders.java:50)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.locateMapper(JacksonJsonProvider.java:634)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:413)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1356)
at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:438)
... 98 more
Run Code Online (Sandbox Code Playgroud)
我在v8.5.5.9中找到了由相同问题引发的讨论,但我不确定它是如何帮助我的.正如我所说,我对v8.5.5.9中的代码没有任何麻烦
另一个讨论与Jackson v2.x有关.最初我使用了Jackson v1.9.13,但我试图切换到最新的Jeckson 2.8.0版本并应用提供的解决方案.相同的结果:应用程序在wlp 8.5.5.9中工作,并在v16.0.0.2中产生相同的错误.
有任何想法吗?
更新: 通过扩展JacksonJsonProvider类并显式提供对象映射器可以避免此问题
public class MyJacksonJsonProvider extends JacksonJsonProvider {
public MyJacksonJsonProvider() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibilityChecker(objectMapper.getVisibilityChecker().withFieldVisibility(JsonAutoDetect.Visibility.ANY));
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
setMapper(objectMapper);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在客户端注册它
Client client = ClientBuilder.newClient().register(MyJacksonJsonProvider.class);
Run Code Online (Sandbox Code Playgroud)
但是,如果它是一个错误或一个功能,那将很高兴.
为了配合使用,@DataSourceDefinition
我想从使用此@DataSourceDefinition
注释的应用程序(或部署描述符中的等效数据源元素)加载DataSource类。
根据我在Java EE 7示例项目中添加的测试,该方法基本上适用于每台服务器。
例如,考虑web.xml中的此数据源定义:
<data-source>
<name>java:app/MyApp/MyDS</name>
<class-name>org.h2.jdbcx.JdbcDataSource</class-name>
<url>jdbc:h2:mem:test</url>
</data-source>
Run Code Online (Sandbox Code Playgroud)
包含的jar org.h2.jdbcx.JdbcDataSource
将驻留在WEB-INF / lib中。
在针对自动下载的服务器进行测试以及事先未知部署的.war名称的情况下(因为由Arquillian控制),在CI测试中这非常方便。
尽管几乎每个服务器都支持此功能,但是Liberty 16.0.2会为java:app/MyApp/MyDS
或抛出以下异常java:global/MyDS
:
CWNEN0011E:注入引擎由于以下错误而无法处理元数据的绑定:java.sql.SQLNonTransientException:J2CA8022E:应用程序xyz23-zvf没有任何共享库,这些共享库为org.h2.jdbcx.JdbcDataSource提供了数据源java:global / MyDS。
在IBM指令是指建立一个共享库,生活中的本地文件系统上,但对于几类数据源(如那些只具有内部意义的应用程序),以及用于提及CI测试这是不实际。
有什么方法可以像大多数其他Java EE服务器一样让Liberty从应用程序加载数据源吗?
我想使用Java在Websphere-Liberty服务器上实现单点登录.我想使用LDAP对用户进行身份验证.
我搜索了很多但找不到确切的例子.我已经检查了堆栈溢出的每个可用示例.但没有运气.
如果可以为它提供演示或示例代码,那将是很好的.
提前致谢.
更新:我能够在华夫饼干的帮助下实现相同的功能..但华夫饼不适用于Linux/Unix... 谁能帮帮我吗?
我有一个javascript/html/css应用程序与Bluemix上的Springboot一起提供.在本地运行应用程序工作正常,代码在几个月内没有更改.当我尝试使用CF CLI推送应用程序时,出现以下错误:
2017-11-13T12:18:29.89-0600 [CELL/0] OUT Successfully destroyed container
2017-11-13T12:19:33.32-0600 [CELL/0] OUT Creating container
2017-11-13T12:19:37.70-0600 [CELL/0] OUT Successfully created container
2017-11-13T12:19:55.79-0600 [CELL/0] OUT Starting health monitoring of container
2017-11-13T12:19:59.83-0600 [APP/PROC/WEB/0] OUT 18:19:59.812 [main] INFO app.Application - App Started
2017-11-13T12:20:03.49-0600 [APP/PROC/WEB/0] OUT 2017-11-13 18:20:03,485 INFO [main] app : app.Application : Starting Application on with PID 13 (/home/vcap/app/BOOT-INF/classes started by vcap in /home/vcap/app)
2017-11-13T12:20:03.49-0600 [APP/PROC/WEB/0] OUT 2017-11-13 18:20:03,487 INFO [main] app : app.Application : No active profile set, falling back to default profiles: …
Run Code Online (Sandbox Code Playgroud) 我需要一些帮助来理解Websphere Liberty(18.0.0.1)如何处理JAX-RS端点调用中抛出的异常.我正在使用Liberty功能jaxrs-2.0
,因此应该由WLP提供实现.
现在,我的应用程序有一个POST HTTP端点接受JSON有效负载,我想为所有可能的错误客户端输入提供自定义错误消息.
这是一个以我预期的方式工作的案例:
application/xml
而不是application/json
ClientErrorException
由容器抛出ExceptionMapper<WebApplicationException>
处理此异常(实际上是为了处理所有Web应用程序异常,我很好)以下是不适合我的情况:
application/json
,但空体java.io.EOFException: No content to map to Object due to end of input
- 是的,这看起来很准确EOFException
成某种WebApplicationException
(我可以轻松处理),WLP将异常问题包装成JaxRsRuntimeException
这里有几点:
ExceptionMapper<JaxRsRuntimeException>
因为该异常不是JAX-RS 2.0规范的一部分,我必须提供导入到JaxRsRuntimeException并将应用程序与一些Liberty特定的库连接起来.ExceptionMapper<RuntimeException>
和字符串检查,如果它找到classname'JaxRsRuntimeException'的异常,然后处理它.但这对我来说似乎并不合适.那么,WLP设计是不是在这种情况下不给我一个WebApplicationException?处理这种情况的优雅解决方案是什么?
谢谢
编辑:添加了部分源代码.
REST端点和资源方法:
@Path("/books")
public class BookEndpoint {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createBook(Book book, @Context UriInfo uriInfo) {
bookDao.create(book);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
builder.path(Integer.toString(book.getId()));
return Response.created(builder.build()).entity(book).build(); …
Run Code Online (Sandbox Code Playgroud) 我们使用Liberty for Java构建了一个Cloud Foundry应用程序.在测试应用程序时,我们发现SSL cookie没有设置安全标志.
问题:当_VCAP_ID设置了安全标志时,JSESSIONID没有设置安全标志
我们使用Spring Boot来开发应用程序,根据文档我们只需要在属性文件中保护cookie标志:http://docs.spring.io/spring-boot/docs/current/reference/html/common -应用- properties.html
解决方案:我们最终通过以下文章自动修复了问题,在弹簧中将安全标志添加到JSESSIONID cookie
有没有人知道Cloud Foundry或Liberty是否存在与无法通过HTTPS同时在JSESSIONID和_VCAP_ID上设置SSL cookie安全标志相关的问题?
cookies jsessionid websphere-liberty sticky-session ibm-cloud
java ×5
ibm-cloud ×3
jax-rs ×2
open-liberty ×2
websphere ×2
classpath ×1
cookies ×1
datasource ×1
eclipse ×1
jackson ×1
java-ee ×1
jsessionid ×1
jsp ×1
ldap ×1
manifest ×1
spring-boot ×1