OSBOracle Service Bus安装配置手册.docx
- 文档编号:7806567
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:60
- 大小:1.59MB
OSBOracle Service Bus安装配置手册.docx
《OSBOracle Service Bus安装配置手册.docx》由会员分享,可在线阅读,更多相关《OSBOracle Service Bus安装配置手册.docx(60页珍藏版)》请在冰豆网上搜索。
OSBOracleServiceBus安装配置手册
OracleServiceBus
安装配置手册
1OracleServiceBus安装
点击osb103_weblogic103_win32.exe
建立BEAHome
选择Custom方式,并选择所有
选择安装JDK
2
OracleServiceBus域配置
启动配置向导configurationwizard(program->OracleWebLogic->WebLogicServer10gr3->Tools->ConfigurationWizard)
选择CreateanewWebLogicdomain,然后Next
选择WorkshopforWebLogic10.3和OracleServiceBus,然后Next
输入WebLogic管理控制台用户名密码(weblogic/weblogic),然后Next
选择域的运行模式,缺省开发模式,然后选择相应的JDK,然后Next
选择Next
输入域名称和所在目录,选择Create,直到完成,选择Done
OracleServiceBus的域配置完成.
3开发环境准备
3.1Server配置
打开workshop(Program->OracleWebLogic->WorkshopforWebLogic10gr3),在Servers的视图中选择新建
选择OracleWebLogicServerv10.3,然后Next
配置域路径
直到出现
配置server过程完成
3.2建立OracleServiceBus配置项目及项目
选择File->New->OracleServiceBusConfigurationProject
输入项目名,比如EPSProject1
选择EPSProject1,右键建立OracleServiceBus项目
输入项目名称,然后Finish
在新建立的OracleServiceBus项目下如图建立以下目录(Folder),分别是BusinessServices,ProxyServices,ServiceAccount,Tranformation,WSDL,Jar
分别作为以下用途
BusinesssServices:
用于存放定义的BusinessServices,接入后端服务
ProxyServices:
用于定义ProxyServices,提供前端调用接口
ServiceAccount:
用于定义ftp的访问需要的用户名密码
Transformation:
用于存放和定义在过程中发生的数据转换
WSDL:
用于存放WSDL文件
Jar:
用于JavaCallout,主要是通过JavaCallout方式来记日志
3.3建立记Log的Java项目
首先先在数据库表中建立osblog表
Createtableosblog(
Transnovarchar(20),
Messagevarchar(200),
Transdatedate);
在WebLogicconsole中建立到数据库的连接池,JNDI设置为XE
建立JavaProject,注意在build路径下加入weblogic.jar
先建立一个osbutility的package,然后新建OsbLogMessage类,代码如下:
packageosbutility;
importjava.sql.Connection;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.*;
importjavax.naming.Context;
importjavax.naming.InitialContext;
publicclassOsbLogMessage{
/**
*@paramargs
*/
/*publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
*/
publicstaticbooleanlog(Stringtransno,Stringmess){
Connectioncon=null;
Statementstmt=null;
intval=1;
try{
Contextctx=null;
Hashtable
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3:
//localhost:
7001");
ht.put(Context.SECURITY_PRINCIPAL,"weblogic");
ht.put(Context.SECURITY_CREDENTIALS,"weblogic");
ctx=newInitialContext(ht);
javax.sql.DataSourceds=(javax.sql.DataSource)ctx.lookup("XE");
con=ds.getConnection();
Stringsql="insertintoosblogvalues('"+transno+"','"+mess+"',sysdate)";
System.out.println(sql);
stmt=con.createStatement();
val=stmt.executeUpdate(sql);
}catch(Exceptione){
System.out.println(e.getMessage());
}finally{
try{
if(stmt!
=null)
stmt.close();
if(con!
=null)
con.close();
}
catch(SQLExceptione){
System.out.println(e.toString());
}
}
if(val!
=0)
returnfalse;
returntrue;
}
}
3.4配置WebLogicServer的连接池(记Log要用)
打开WebLogicServer管理控制台http:
//localhost:
7001/console
新建Services->JDBC->DataSource
其他选择缺省设置,并且设置用户名密码,测试通过部署到AdminServer就可
3.5配置Queue(对帐交易中用到)
1)选择Services->Messaging->JMSModules,建立CHModule
选择部署到AdminServer
2)新建JMSServers同时部署到AdminServer
3)在CHModule中建立ConnectionFactory
4)然后新建Queue
5)选择新建Subdeployment如图
完成
3.6建立对SocketTransport的支持
1)先在cmd下转到需要部署的OracleServiceBusdomain目录(如E:
\bea\user_projects\domains\CH_domain\bin),运行SetDomainEnv.cmd
2)在cmd下转到相应的SocketTransport的安装目录(如E:
\bea\osb_10.3\samples\servicebus\sample-transport),修改在E:
\bea\osb_10.3\samples\servicebus\sample-transport\src\com\bea\alsb\transports\sock中的SocketTransportUIBinding.java,主要修改方法为:
(蓝色)
publicbooleanisServiceTypeSupported(BindingTypeInfobindingType){
returntrue;
/*
try{
BindingTypeInfo.BindingTypeEnumtype=bindingType.getType();
if(type.equals(BindingTypeInfo.BindingTypeEnum.MIXED)){
BindingTypeInfo.MessageTypeEnumresponseMessageType=
bindingType.getResponseMessageType();
if(responseMessageType!
=null){
if(!
(
BindingTypeInfo.MessageTypeEnum.TEXT.equals(responseMessageType)||
BindingTypeInfo.MessageTypeEnum.XML
.equals(responseMessageType))){
returnfalse;
}
}
BindingTypeInfo.MessageTypeEnumrequestMessageType=
bindingType.getRequestMessageType();
if(requestMessageType!
=null){
return
BindingTypeInfo.MessageTypeEnum.TEXT.equals(requestMessageType)||
BindingTypeInfo.MessageTypeEnum.XML.equals(requestMessageType);
}else{
returnfalse;
}
}
returntype.equals(BindingTypeInfo.BindingTypeEnum.ABSTRACT_XML)
||type.equals(BindingTypeInfo.BindingTypeEnum.XML);
}catch(TransportExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage(),e);
returnfalse;
}*/
}
3)修改SocketOutBoundMessageContext.java
Run方法主要决定如何处理从后端系统的返回,修改的部分如蓝色
publicvoidrun(){
try{
//iftheend-pointisone-way,don'treadtheresponse.
if(!
epc.getRequestResponse()){
SocketTransportMessagesLogger.oneWayEndpoint();
listener.onReceiveResponse(SocketOutboundMessageContext.this);
return;
}
StringresEnc=getResponseEncoding();
responseMetadata=newSocketResponseMetaData(resEnc);
InetAddressinetAddress=clientSocket.getInetAddress();
responseMetadata.setEndPointHost(inetAddress.getHostName());
responseMetadata.setEndPointIP(inetAddress.getHostAddress());
//Readingtheresponsefromtheexternalservice.
InputStreaminputStream=clientSocket.getInputStream();
InputStreamReaderinputStreamReader=
newInputStreamReader(inputStream,resEnc);
inti=-1;
StringBuildersb=newStringBuilder();
char[]buff=newchar[512];
while(true){
i=inputStreamReader.read(buff);
if(i==-1){
break;
}
sb.append(buff,0,i);
/**ifitendswithdoubleCRLF,comeout.Wecanreadthecontent
*after\r\n\r\nbecuaseweareexpectingonlyonemessageper
*connectioni.eweareclosingtheconnectionafterprocessinga
*singlemessage.
*/
if((i=sb.indexOf(SocketTransportUtil.FIN_FLAG))!
=-1){
break;
}
}
if(i!
=-1){
//strip\r\n\r\nfromthemessage.
Stringmsg=sb.substring(0,i+2);
responseIS=newByteArrayInputStream(msg.getBytes(resEnc));
listener.onReceiveResponse(SocketOutboundMessageContext.this);
}else{
//Messageformatiswrong,itshouldendwith\r\n\r\n
listener.onError(SocketOutboundMessageContext.this,
TransportManager.TRANSPORT_ERROR_GENERIC,
SocketTransportMessagesLogger.invalidMessage());
}
}catch(IOExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage(),e);
listener.onError(SocketOutboundMessageContext.this,
TransportManager.TRANSPORT_ERROR_GENERIC,e.getLocalizedMessage());
}catch(TransportExceptiontrex){
SocketTransportUtil.logger.error(trex.getLocalizedMessage(),trex);
listener.onError(SocketOutboundMessageContext.this,
TransportManager.TRANSPORT_ERROR_GENERIC,trex.getLocalizedMessage());
}finally{
try{
clientSocket.close();
}catch(IOExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage(),e);
}
}
}
4)Send则决定如何把信息从OSB发给后端系统,改动部分如蓝色:
publicvoidsend(finalTransportSendListenerlistener)
throwsTransportException{
Stringaddress=options.getURI().toString();
try{
Stringhost=null;
intport=0;
try{
URIuri=newURI(address);
host=uri.getHost();
port=uri.getPort();
}catch(URISyntaxExceptione){
newTransportException(e.getMessage(),e);
}
SocketTransportMessagesLogger.ipAddress(host,port);
finalSocketclientSocket=newSocket(host,port);
SocketEndpointConfigurationsocketEndpointConfiguration=
SocketTransportUtil.getConfig(config);
SocketOutboundPropertiesTypeoutboundProperties=
socketEndpointConfiguration.getOutboundProperties();
clientSocket.setTcpNoDelay(!
outboundProperties.getEnableNagleAlgorithm());
clientSocket.setSoTimeout(outboundProperties.getTimeout());
StringreqEnc=socketEndpointConfiguration.getRequestEncoding();
if(reqEnc==null){
reqEnc="utf-8";
}
//Sendthemessagetotheexternalservice.
OutputStreamoutputStream=clientSocket.getOutputStream();
TransformOptionstransformOptions=newTransformOptions();
transformOptions.setCharacterEncoding(reqEnc);
sender.getPayload().writeTo(outputStream,transformOptions);
//outputStream.write(SocketTransportUtil.D_CRLF.getBytes(reqEnc));
outputStream.flush();
SocketTransportMessagesLogger.flushed();
PipelineAcknowledgementTasktask=
newPipelineAcknowledgementTask(listener,clientSocket,
socketEndpointConfiguration);
TransportManagerHelper
.schedule(task,socketEndpointConfiguration.getDispatchPolicy());
}catch(UnknownHostExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage());
thrownewTransportException(e.getMessage(),e);
}catch(IOExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage());
thrownewTransportException(e.getMessage(),e);
}catch(TransformExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage());
thrownewTransportException(e.getMessage(),e);
}catch(TransportExceptione){
SocketTransportUtil.logger.error(e.getLocalizedMessage());
throwe;
}
}
5)转到相应的SocketTransport的安装目录(如E:
\bea\osb_10.3\samples\servicebus\sample-transport),运行antclean
6)运行antbuild-jar
7)运行antdeploy
3.7电子支付平台与码头接口配置
i.在WeblogicWorkshop中创建一个支持XMLBean的WebServiceProject
ii.在项目底下的“Schema”文件夹中新建一个Schema:
iii.编辑该Schema文件,将接口中需要用到的数据结构定义在该Schema文件中:
xmlversion="1.0"encoding="UTF-8"?
>
//www.w3.org/2001/XMLSchema"targetNamespace="http: //www.example.org/ServiceIntegrateSchema"xmlns: tns="http: //www.example.org/ServiceIntegrateSchema"elementFormDefault="qualified"> PaySuccessInfoType"minOccurs="0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OSBOracle Service Bus安装配置手册 Bus 安装 配置 手册