在使用Network Deployment的WebSphere Application Server安装中,节点是:
JSF 2.0可以与WebSphere Application Server V7.x一起使用吗?
如果是这样,怎么样?
我正在考虑将我在Eclipse中编写的Web服务部署到EAR文件中.我可以将它作为WAR导出并在Tomcat上将其部署在所有精细和花花公子上,但最终产品不会在Tomcat上,也不会是WAR文件.我需要使用Websphere作为服务器,我可以访问并可以部署有效的EAR文件......如果我有一个要部署的EAR文件.
长话短说,如何从Eclipse中的Dynamic Web Project导出EAR文件?
在Java EE应用程序(在Websphere上运行)中是否有任何简单的方法可以在整个集群中的应用程序范围内共享对象?某些东西可能类似于Servlet Context参数,但它在整个集群中共享.
例如,在服务器"A"和"B"的集群中,如果在服务器A上设置了值(key = value),则该值应该立即(或几乎如此)对服务器B上的请求可用.
(注意:如果可能,请避免使用分布式缓存解决方案.这实际上不是缓存方案,因为存储的对象是相当动态的)
由于经典的JNDI查找和RMI-IIOP方法调用,我的应用程序是一个独立的Swing客户端调用EJB无状态会话bean.它作为Java WebStart应用程序启动.我的目标是从获取客户端用户的身份EJBContext
与getCallerPrincipal
感谢的Kerberos SSO在Windows工作站,ActiveDirectory中和在Linux上运行的WebSphere服务器之间的方法.
由于信息中心文档,我已经在网络部署模式下成功配置了我的WebSphere单元以支持Kerberos身份验证.
这两个krb5.conf
和krb5.keytab
文件都OK,并在Linux测试kinit
,klist
并且wsadmin
,$AdminTask validateKrbConfig
解答true
.
在客户端安装不只是指JAAS login.config
文件,以实现与指挥系统属性.我的直觉告诉我这可能还不够.
但现在,我找不到更多信息来完成测试用例:
更新
由于没有运行JavaEE客户端容器./launchClient
,我在JNLP中设置了要读取的必需属性sas.client.props
和JAAS登录配置:
<property name="java.security.auth.login.config" value="C:\temp\wsjaas_client.config"/>
<property name="com.ibm.CORBA.ConfigURL" value="C:\temp\sas.client.props"/>
Run Code Online (Sandbox Code Playgroud)
我wsjaas_client.config
是针对Oracle Java的,因此它包含:
WSKRB5Login{
com.sun.security.auth.module.Krb5LoginModule required
debug=true useTicketCache=true doNotPrompt=true;
};
Run Code Online (Sandbox Code Playgroud)
我的sas.client.props
包含:
com.ibm.CORBA.securityEnabled=true
com.ibm.CORBA.authenticationTarget=KRB5
com.ibm.CORBA.loginSource=krb5Ccache
com.ibm.CORBA.loginUserid=
com.ibm.CORBA.loginPassword=
com.ibm.CORBA.krb5CcacheFile=
com.ibm.CORBA.krb5ConfigFile=C:\\temp\\krb5.conf
Run Code Online (Sandbox Code Playgroud)
目前,没有触发Kerberos身份验证:WAS/myserver.mydomain.com
我的kerberos缓存(来自Windows或Linux工作站)中的SPN没有TGS,并且仍然匿名建立JNDI连接.
没有错误消息,没有警告,最后没有委托人.我如何诊断错误或缺乏?
更新2012/06/20
这是向前迈出的一步.在我的应用程序JNLP中运行Oracle Java,我已设置以下属性以使用IBM ORB并启用完整的跟踪和调试信息:
<property name="org.omg.CORBA.ORBSingletonClass" value="com.ibm.rmi.corba.ORBSingleton"/>
<property name="org.omg.CORBA.ORBClass" value="com.ibm.CORBA.iiop.ORB"/> …
Run Code Online (Sandbox Code Playgroud) 我正在构建一个部署到在Linux上运行的WebSphere Portal Server的Portlet应用程序.每个Portlet WAR使用Log4j进行日志记录,使用这样的配置,每个WAR都有两个日志文件:
log4j.logger.im.the.package=DEBUG, InfoAppender, DebugAppender
log4j.appender.InfoAppender=org.apache.log4j.RollingFileAppender
log4j.appender.InfoAppender.Threshold=INFO
log4j.appender.InfoAppender.File=/tmp/infoWARName.log
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=/tmp/debugWARName.log
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d %p [%c] - %m%n
Run Code Online (Sandbox Code Playgroud)
部署之后,一切都像魅力和日志文件开始填充.几个小时后,同时,Logging停止info.log
并且debug.log
根本不更新.我们需要在服务器中重新部署Portlet WAR以重新开始记录.
有任何想法吗?
更新:
我开始怀疑它与我的Logging JARS有关.目前,这是我的WEB-INF/lib
文件夹中的JAR :
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.slf4j.api-1.5.6.jar
slf4j-log4j12-1.5.6.jar
Run Code Online (Sandbox Code Playgroud)
第二次更新:
从赏金到结束的几个小时,这就是每个Portlet应用程序中配置Log4j的方式.这是web.xml
:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:miAppLog4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
并且miAppLog4j.properties
文件位于WAR外部的文件夹和Portal中.我们通过WebSphere Portal中的共享库在 Portlet Classpath中创建了它.
我有以下......
Context aContext = = new InitialContext(settings);
aContext.lookup("java:comp/env/DB2_DB");
Run Code Online (Sandbox Code Playgroud)
还试过......
aContext.lookup("DB2_DB");
Run Code Online (Sandbox Code Playgroud)
web.xml中
<resource-ref>
<description>
</description>
<res-ref-name>DB2_DB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<mapped-name>DB2_DB</mapped-name>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
然后在我的ibm-web-bnd.xml中......
<resource-ref name="DB2_DB" binding-name="jdbc/DB2DB" />
Run Code Online (Sandbox Code Playgroud)
在Websphere中,我在资源> JDBC>数据源中看到绑定名称
但是当我运行我的应用程序时,我看到......
引发者:javax.naming.NameNotFoundException:上下文:Node04Cell/nodes/Node04/servers/server1,name:DB2_DB:找不到名称DB2_DB中的第一个组件.[root例外是org.omg.CosNaming.NamingContextPackage.NotFound:IDL:omg.org/CosNaming/NamingContext/NotFound:1.0] ^ M
这是WAS6-8.5的一个港口项目
枝,
我编写了一个连接到Salesforce并更新其中的值的java代码,当我从本地系统作为独立的Java应用程序运行它时,它运行良好,但我的主要目标是将其作为filenet BPM中的java组件工作流,所以当工作流进程到达这个java组件时,它会抛出一个错误作为标题
整个堆栈堆栈跟踪如下
com.sforce.ws.ConnectionException: Failed to send request to https://login.salesforce.com/services/Soap/c/24.0/0DF90000000PX8r
at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:129)
at com.sforce.soap.enterprise.EnterpriseConnection.login(EnterpriseConnection.java:1052)
at com.sforce.soap.enterprise.EnterpriseConnection.<init>(EnterpriseConnection.java:399)
at salesforceupdate.SalesForceUpdate.main(SalesForceUpdate.java:70)
at salesforceupdate.Callin.UpdateSL(Callin.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at filenet.vw.integrator.adaptors.java.VWJavaAdaptor.execute(VWJavaAdaptor.java:426)
at filenet.vw.integrator.base.VWAdaptorEx$AdaptorAction.run(VWAdaptorEx.java:120)
at java.security.AccessController.doPrivileged(AccessController.java:284)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:727)
at filenet.vw.integrator.base.VWAdaptorEx.run(VWAdaptorEx.java:360)
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at com.ibm.jsse2.n.a(n.java:42)
at com.ibm.jsse2.tc.a(tc.java:96)
at com.ibm.jsse2.tc.a(tc.java:340)
at com.ibm.jsse2.tc.a(tc.java:555)
at com.ibm.jsse2.tc.a(tc.java:510)
at com.ibm.jsse2.tc.startHandshake(tc.java:381)
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:151)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:64)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1024) …
Run Code Online (Sandbox Code Playgroud) 目前我正在工作的客户正在使用此处概述的SEO友好网址:
但是,他们希望/en/clientstorename
从所有网址中删除.例如,当用户导航到www.clientwebsite.com时,该URL会自动切换到www.clientwebsite.com/en/clientstorename.我想删除/en/clientstorename
网址上的网址以及网站上的所有其他网址.
客户还告诉我,IHS更改不是解决此问题的可能方法.
所以,据我所知,这使得我可以直接从每个SEOURLPatterns xml文件中的所有条目中删除/ LanguageToken/StoreToken:CatalogToken部分.也就是说,我的想法是在工作区中的所有SEOURLPatterns xml文件中进行此更改. (注意注释掉的现有行和我未注释的修改行)
<seourl:seoUrlPatternDef name="PersonalizedProductURLPIPPage">
<!--<seourl:seoUrlPattern viewName="ThirdPartyVendorProductsDisplayView">/LanguageToken/StoreToken:CatalogToken/ProductToken/PCPToken/BeginIndexToken/ioZoneToken</seourl:seoUrlPattern>-->
<seourl:seoUrlPattern viewName="ThirdPartyVendorProductsDisplayView">/ProductToken/PCPToken/BeginIndexToken/ioZoneToken</seourl:seoUrlPattern>
<seourl:urlToParamMapping>
<seourl:mapping name="langId" value="?LanguageToken?"/>
<seourl:mapping name="storeId" value="?StoreToken?"/>
<seourl:mapping name="catalogId" value="?CatalogToken?"/>
<seourl:mapping name="productId" value="?ProductToken?"/>
<seourl:mapping name="plchldr" value="?PCPToken?"/>
<seourl:mapping name="mfname" value="?BeginIndexToken?" />
<seourl:mapping name="styleId" value="?ioZoneToken?" />
<seourl:mapping name="errorViewName" value="ProductDisplayErrorView"/>
</seourl:urlToParamMapping>
<seourl:paramToUrlMapping>
<seourl:mapping name="LanguageToken" value="?langId?" defaultValue="-1"/>
<seourl:mapping name="StoreToken" value="?storeId?"/>
<seourl:mapping name="CatalogToken" value="?catalogId?"/>
<seourl:mapping name="ProductToken" value="?productId?"/>
<seourl:mapping name="PCPToken" value="?plchldr?"/>
<seourl:mapping name="BeginIndexToken" value="?mfname?"/>
<seourl:mapping name="ioZoneToken" value="?styleId?"/>
</seourl:paramToUrlMapping>
<seourl:usageDef>
<seourl:usage device="browser">
<seourl:target>CatalogEntry</seourl:target>
</seourl:usage>
</seourl:usageDef>
</seourl:seoUrlPatternDef>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我确实看到生成的URL现在已经遗漏了/en/clientstorename …
我从从java代码调用存储过程的代码中收到以下错误:
Exception Trace {} org.springframework.jdbc.UncategorizedSQLException:CallableStatementCallback; 未分类SQL的SQLException [{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,,?,,?,?,?,?,?)}]; SQL状态[null]; 错误代码[0]; 没有为参数编号11设置该值.嵌套异常是com.microsoft.sqlserver.jdbc.SQLServerException:未在org.springframework.jdbc的org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)中为参数编号11设置该值. support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)在org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1095)在org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1131)
该应用程序部署在WAS 8.5.5上并使用jdbc驱动程序版本4.2.重新启动服务器时,此问题不再发生.生成的以下调用语句看起来不正确.连续逗号没有?它们之间.
{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,,?,,?,?,?,?,?)}
存储过程有10个参数.以下是存储过程的定义:
CREATE PROCEDURE [test].[usp_xxx_GetCompanyDetails]
(
@ANumber int,
@CompanyId int,
@UserRole varchar(15),
@RequestId varchar(100),
@CompanyCode varchar(5),
@BaseSystem varchar(5),
@PType varchar(20),
@PId varchar(40),
@IsActive bit,
@responseData xml OUT
)
Run Code Online (Sandbox Code Playgroud)
以下是调用存储过程的java代码.它使用spring数据进行调用.
private String executeProc(Integer aNumber,Integer companyId, String baseSystem,
String role,String companyCode,String requestId, String pType,String pId,
boolean isActive ) throws SQLException {
SQLXML responseData=null;
Map<String,Object> inputParams= new HashMap<>();
inputParams.put("ANumber", aNumber);
inputParams.put("CompanyId", companyId);
inputParams.put("UserRole", role);
inputParams.put("RequestId", requestId);
inputParams.put("CompanyCode", companyCode); …
Run Code Online (Sandbox Code Playgroud) websphere ×10
java ×8
java-ee ×2
websphere-7 ×2
deployment ×1
ear ×1
eclipse ×1
ejb ×1
jdbc ×1
jsf ×1
jsf-2 ×1
kerberos ×1
log4j ×1
salesforce ×1
seo ×1
sql-server ×1
url ×1